所以我有以下模特:
linked_article = models.ForeignKey('Article', blank=True, null=True, db_constraint=False)
... more fields which aren't relevant to this question ...
title=models.CharField(max_length=60)
draft_state=models.BooleanField(default=True)
... More fields which aren't relevant to this questions ...
在文章模型中有一个字段draft_state
,它允许我将文章的状态更改为已发布,草稿,已阻止(1,2,3)。
我正在提取所有推荐的文章,并希望过滤外键文章以确保draft_state === 1
。以下是我目前所拥有的一些伪代码,我认为实现此代码的代码可能如下所示:
suggested_article = SuggestedArticle.objects\
.filter(
is_active=1,
Article.draft_state=1, # Something like this?! <~~~~~
state__in=[state, 'ALL'],
)\
我能用django做到这一点吗?
答案 0 :(得分:1)
Django提供了一种强大而直观的方式来“关注”lookups中的关系,在幕后自动为您处理 SQL JOINs 。要跨越关系,只需使用跨模型的相关字段的字段名称,用双下划线分隔,直到到达所需的字段:
suggested_article = SuggestedArticle.objects.filter(
is_active=1,
state__in=[state, 'ALL'],
linked_article__draft_state=True
)