码迷,mamicode.com
首页 > 其他好文 > 详细

Django学习笔记3一对多,多对多关系解析

时间:2015-01-31 17:37:04      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

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_type

class 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一对多,多对多关系解析

标签:

原文地址:http://www.cnblogs.com/zzblee/p/4264312.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!