从两个表中加入选择

时间:2018-02-27 13:56:05

标签: mysql django python-3.x django-models

我正在使用Djangomysql数据库。

我的表格Question包含字段id, text, section_id,我的表格CompletedQuestion包含字段id, question_id,其中字段为question_idQuestion.id的外键。

我的models.py包含:

class Question(mixins.OrdMixin, mixins.EqMixin, models.Model):
    section = models.ForeignKey('Section',
                                on_delete=models.CASCADE,
                                related_name='owner')
    text = models.TextField()

class CompletedQuestion(models.Model):

    question = models.ForeignKey('Question',
                                 on_delete=models.CASCADE,
                                 related_name='question_source')

我想检查CompletedQuestion中是否存在属于section_id的特定Question的完整问题。

我目前的查询如下,但不是正确的:

quest_id = Question.objects.filter(section_id = section_id)

1 个答案:

答案 0 :(得分:1)

您可以使用__isnull=True|False过滤器来检查是否存在任何相关模型,我真的不明白您的意思,但有类似的内容:

Question.objects.filter(section_id=section_id, question_source__isnull=False)

或者来自另一个方向,如:

CompletedQuestion.objects.filter(question__section_id=section_id) \
    .values_list("question_id",flat=True).distinct()

获取具有任何相关CompletedQuestions

的问题ID列表