美文网首页
django 一对多关系结果查询

django 一对多关系结果查询

作者: amyhy | 来源:发表于2017-09-13 18:55 被阅读85次

我先定义两个模型,一个是问题,一个是选项,一个问题可以有多个选项。一对多的类型。

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    class Meta:
        db_table = 'question'

    def __str__(self):
        return self.question_text


class Choice(models.Model):
    question = models.ForeignKey(Question)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    class Meta:
        db_table = 'choice'

    def __str__(self):
        return self.choice_text

我们要查询某个问题下有哪些选项可以用
先查询到问题的信息

question = get_object_or_404(Question, 筛选条件)

返回一个question对象

接下来就查询question关联的所有选项对象
choice = question.choice_set.all()
django 默认每个主表的对象都有一个是外键的属性,可以通过它来查询到所有属于主表的子表的信息。
这个属性的名称默认是以子表的名称小写加上_set()来表示,默认返回的是一个querydict对象,你可以继续的根据情况来查询等操作。

如果你觉得上面的定义比较麻烦的话,你也可以在定义主表的外键的时候,给这个外键定义好一个名称。要用related_name比如:

question = models.ForeignKey(Question, related_name='question_set')

那么上面的话:choice = question.choice_set.all()
也可以用choice = question.question_set.all()

上面的是查询是通过主表来查询子表的信。

下面我简单的说下通过子表来查询主表的信息。

假设需要查询一个选项对应的的信息,那我可以通过下面的步骤来实现:

假如我先得到了一个子表的对象。那我只要获取该对象关联主表的外键的熟悉,就可以得到主表的信息了。
比如得到一个choice对象,然后我想得到choice对象的主表question的信息的话:
p =choice.question

相关文章

  • Django中关系查询

    1 Django中关系查询 一对一 一对多 多对多 1.1 一对多 1.1.1 app下创建models类 1.1...

  • Django 2.1.7 模型管理器 models.Manage

    上一篇Django 2.1.7 模型的关联讲述了关于Django模型一对多、多对多、自关联等模型关系。 在查询数据...

  • Django 模型间的关系

    Django模型之间的关系 Django模型的对应关系,一对一,一对多,以及多对多的关系。 一对一 OneToOn...

  • django 一对多关系结果查询

    我先定义两个模型,一个是问题,一个是选项,一个问题可以有多个选项。一对多的类型。 我们要查询某个问题下有哪些选项可...

  • Django-关系映射

    关系映射 一对一映射 语法 查询 一对多映射 语法 查询 多对多映射 语法 查询 自定义查询对象

  • MySQL多表查询

    首先我们来了解一下表与表之间的关系:一对一、一对多、多对多。这里我们把多表查询分为四个学习模块:连接查询、合并结果...

  • 2018-12-20 模型关系和钩子函数

    一、模型关系定义 1.1 一对多   一对多关系中的查询操作 1.2 一对一 1.3 多对多   创建多对多关系 ...

  • Day60 - Flask模型关系与查询、钩子函数、装饰器登录校

    一对一关系 其他与一对多关系一样 一对多关系 一对多模型定义 一对多关系查询 多对多关系 多对多关系模型定义 定义...

  • 关联查询、子查询与分页查询

    关联查询 关联关系分为一对一,一对多,多对多关系关联查询就是从多张表中查询数据,当我们使用n张表使用关联查询,至少...

  • SSM框架的常用注解整理

    一.mybatis 1 配置一对多查询和多对多查询的注解方式映射关系: @Results:声明映射关系的配置 Va...

网友评论

      本文标题:django 一对多关系结果查询

      本文链接:https://www.haomeiwen.com/subject/vyelsxtx.html