首页 > 代码库 > Django学习笔记3一对多,多对多关系解析
Django学习笔记3一对多,多对多关系解析
Django 的 ORM 有多种关系:一对一,多对一,多对多。
各自定义的方式为 :
一对一: OneToOneField
多对一: ForeignKey
多对多: ManyToManyField
上边的描述太过数据而缺乏人性化,我们来更人性化一些:
多个属于一个,即 belong to : ForeignKey,多个属于一个
一个有一个,即 has one: OneToOneField
一个有很多个,即 has many: lots of A belong to B 与 B has many A,在建立 ForeignKey 时,另一个表会自动建立对应的关系
一个既有很多个,又属于很多个,即 has many and belong to : ManyToManyField,同样只能在一个model类中说明,关联表会自动建立。
访问方式:
例子. 一个 article对应一个type外键
class NewsType(models.Model): #primary_key=models.IntegerField(max_length=10) news_type=models.CharField(max_length=10) def __unicode__(self): return self.news_typeclass Article(models.Model): #primary_key=models.IntegerField(max_length=10) url=models.URLField() title=models.CharField(max_length=100) date=models.DateField() content=models.TextField() news_type=models.ForeignKey(NewsType)//外键 def __unicode__(self): return self.title
例子 先 创建一个type对象,找到你想找的那个type,然后用
type.article_set.all()返回每个type对应的article列表
print NewsType.objects.all()type=NewsType.objects.get(news_type=‘sports‘)print type.article_set.all()type=NewsType.objects.get(news_type=‘news‘)print type.article_set.all()type=NewsType.objects.get(news_type=‘finance‘)print type.article_set.all()
django默认每个主表的对象都有一个是外键的属性,可以通过它来查询到所有属于主表的子表的信息。 这个属性的名称默认是以子表的名称小写加上_set()来表示,默认返回的是一个querydict对象,你可以继续的根据情况来查询等操作。
Django学习笔记3一对多,多对多关系解析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。