Django - 过滤模型

时间:2016-09-30 19:31:25

标签: python django django-models

我有一个带有列表字段的模型。 例如:

mymodel.sessions = [session1, session2]

我需要一个查询来获取所有mymodels session1在他们的会话中存在。

模型的字段看起来像

sessions = models.ForeignKey("Session", related_name="abstracts",
                                null=True, blank=True)

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用沿外键返回的反向查找来查询相关模型中的值。

MyModel.objects.filter(sessions__id=1)

这将过滤所有MyModel个具有外键的id个{{1}}为1的会话。

有关详细信息,请参阅https://docs.djangoproject.com/en/1.10/topics/db/queries/#lookups-that-span-relationships

答案 1 :(得分:0)

来自Django docs for filter

  

else

     

返回一个新的QuerySet,其中包含与给定查找参数匹配的对象。

如果您拥有,可以使用id过滤ForeignKey关系:

  

查找中指定的字段必须是模型字段的名称。但有一个例外,在ForeignKey的情况下,您可以指定以_id为后缀的字段名称。在这种情况下,value参数应包含外部模型主键的原始值。

在您的实例中,您需要以下内容:

filter(**kwargs)

如果要过滤Sessions模型中的任何其他字段,只需在字段中使用双下划线即可。一些例子:

mymodel.objects.filter(sessions_id=4)