1、ForeignKey

情况I:

  1. from django.db import models
  2.  
  3. class Blog(models.Model):
  4. pass
  5.  
  6. class Entry(models.Model):
  7. blog = models.ForeignKey(Blog)

访问方式:

  1. b = Blog.objects.get(id=1)
  2. b.entry_set.all()

情况II:

  1. from django.db import models
  2.  
  3. class Blog(models.Model):
  4. pass
  5.  
  6. class Entry(models.Model):
  7. blog = models.ForeignKey(
  8. Blog,
  9. related_name='entries'
  10. )

访问方式:

  1. b = Blog.objects.get(id=1)
  2. b.entries.all()

2、ManyToMany

情况I:

  1. class Person(models.Model):
  2. name = models.CharField(max_length=128)
  3.  
  4. def __str__(self): # __unicode__ on Python 2
  5. return self.name
  6.  
  7. class Group(models.Model):
  8. name = models.CharField(max_length=128)
  9. members = models.ManyToManyField(Person)
  10.  
  11. def __str__(self): # __unicode__ on Python 2
  12. return self.name

访问方法:

  1. >>> beatles = Group.objects.create(name="The Beatles")
  2. >>> beatles.members.all()
  3. <QuerySet [<Person: Ringo Starr>]>
  4. >>> ringo = Person.objects.create(name="Ringo Starr")
  5. >>> ringo.group_set.all()
  6. <QuerySet [<Group: The Beatles>]>

情况II:

  1. class Person(models.Model):
  2. name = models.CharField(max_length=128)
  3.  
  4. def __str__(self): # __unicode__ on Python 2
  5. return self.name
  6.  
  7. class Group(models.Model):
  8. name = models.CharField(max_length=128)
  9. members = models.ManyToManyField(Person, related_name='groups')
  10.  
  11. def __str__(self): # __unicode__ on Python 2
  12. return self.name

访问方法:

  1. >>> beatles = Group.objects.create(name="The Beatles")
  2. >>> beatles.members.all()
  3. <QuerySet [<Person: Ringo Starr>]>
  4.  
  5. >>> ringo = Person.objects.create(name="Ringo Starr")
  6. >>> ringo.groups.all()
  7. <QuerySet [<Group: The Beatles>]>

Django 之 ForeignKey、ManyToMany的访问方式的更多相关文章

  1. ADO.NET编程之美----数据访问方式(面向连接与面向无连接)

    最近,在学习ADO.NET时,其中提到了数据访问方式:面向连接与面向无连接.于是,百度了一下,发现并没有很好的资料,然而,在学校图书馆中发现一本好书(<ASP.NET MVC5 网站开发之美&g ...

  2. Objective-C 中self.与_访问方式的区别

    Objective-C中属性self.a与_a访问的区别: 在OC中我们可以通过指令@property定义属性. OC对属性封装了许多方法,同时也会自动实现一些方法,相比实例变量,感觉更加面向对象些. ...

  3. 在APACHE服务器上的访问方式上去除index.php

      在APACHE服务器上的访问方式上去除index.php   下面我说下 apache 下 ,如何 去掉URL 里面的 index.php 例如: 你原来的路径是: localhost/index ...

  4. Java中Map集合的四种访问方式(转)

    最近学习Java发现集合类型真是很多,访问方式也很灵活,在网上找的方法,先放下备用 public static void main(String[] args) { Map<String, St ...

  5. TP中的四种url访问方式

    什么是PATHINFO:就是http://localhost/index.php/Home/Index/index/a/1/b/2?c=3中的红色部分, 注意c=3并不是pathinfo的一部分,它是 ...

  6. smarty中三种变量的访问方式

    在模板中smarty有三种变量,第一种,php分配的变量,第二种配置文件里的变量,第三种,PHP全局数组里的变量,配置文件里变量的访问方式可以是{#bgcolor#},"#"必须紧 ...

  7. thinkphp四种url访问方式详解

    本文实例分析了thinkphp的四种url访问方式.分享给大家供大家参考.具体分析如下: 一.什么是MVC thinkphp的MVC模式非常灵活,即使只有三个中和一个也可以运行. M -Model 编 ...

  8. HDFS副本机制&负载均衡&机架感知&访问方式&健壮性&删除恢复机制&HDFS缺点

    副本机制 1.副本摆放策略 第一副本:放置在上传文件的DataNode上:如果是集群外提交,则随机挑选一台磁盘不太慢.CPU不太忙的节点上:第二副本:放置在于第一个副本不同的机架的节点上:第三副本:与 ...

  9. Oracle 表的访问方式(1) ---全表扫描、通过ROWID访问表

    1.Oracle访问表的方式 全表扫描.通过ROWID访问表.索引扫描 2.全表扫描(Full Table Scans, FTS) 为实现全表扫描,Oracle顺序地访问表中每条记录,并检查每一条记录 ...

随机推荐

  1. Unity 摄像机组件

    今天看一下unity3d里面的摄像机是怎么调用和操作的. 打开unity3d新建一个工程.在我们打开工程的时候unity3d会主动添加一个Main Camera,在Hierartchy视图中.点击Ma ...

  2. ArcGIS图层介绍

    什么是图层 图层是用来在 ArcGIS 产品套件中显示地理数据集的机制.每个图层代表一种数据集(可以是地图服务.图形或是矢量数据),并指定该数据集是如何描绘使用一组属性的. 包含一个地图控件的每个应用 ...

  3. 用python+selenium抓取豆瓣电影中的正在热映前12部电影并按评分排序

    抓取豆瓣电影(http://movie.douban.com/nowplaying/chengdu/)中的正在热映前12部电影,并按照评分排序,保存至txt文件 #coding=utf-8 from ...

  4. How to:如何让Installshield显示正确的软件所需空间--网友冰块先生贡献

    软件环境: installshield2010  工程类型:installshield project  现象:当转换目录后所需空间显示不正常. 解决办法:在转换目录地方加上一个TARGETDIR重新 ...

  5. Git Windows客户端保存用户名与密码

    1. 在Windows中添加一个HOME环境变量,值为%USERPROFILE%,如下图: 2. 在“开始>运行”中打开%Home%,新建一个名为“_netrc”的文件. 3. 用记事本打开_n ...

  6. 微软雅黑 在css里怎么写

    1.首先要了解css中是如何控制字体的. font:在一个声明中设置所有字体属性: font有以下几个属性: font-style:字体样式 font-variant:字体异体 font-weight ...

  7. iOS 自定义选项卡-CYLTabBarController

    正常的选项卡流程 cocoapods就不说了 创建一个CYLTabBarControllerConfig类 #import <Foundation/Foundation.h> #impor ...

  8. Linux运维入门到高级全套常用要点

    Linux运维入门到高级全套常用要点 目 录 1. Linux 入门篇................................................................. ...

  9. 随机函数的代码(srand、rand)

    #include<stdio.h> int main() int counter; for(counter=0;counter<10;counter++) { srand(count ...

  10. redis 3.2.6 on ubuntu 14.04

    1. official site: https://github.com/antirez/redis/releases 2. compile and setup tar zxf redis-3.2.6 ...