• 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_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对象,你可以继续的根据情况来查询等操作。


  • 相关阅读:
    Xilinx之软件平台 ISE与Vivado前世今生
    博客开园
    第一天:开始你的Jobeet项目
    MySQL之alter语句用法总结
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    MySQL中distinct和group by性能比较[转]
    GROUP BY,WHERE,HAVING之间的区别和用法
    split(),preg_split()与explode()函数分析与介
    解析posix与perl标准的正则表达式区别
    sql关键字的解释执行顺序
  • 原文地址:https://www.cnblogs.com/zzblee/p/4264312.html
Copyright © 2020-2023  润新知