两个模型上的 Django 数据库高效查询集



我对 django 很陌生 - 我想知道我是否可以使用 ORM 更有效地进行以下查询:

# somewhere in views.py..
if slug is not None:
    slug_field = self.get_slug_field()
    pkid = FinalModel.objects.all().get(slug__exact=slug)
    queryset = queryset.filter(owner__exact=pkid.id)
    obj = queryset.get()
    return obj

所以,基本上,我正在做的是(返回一个对象),首先:使用 url 中的 slug 获取pkid,然后使用此信息 ( pkid.id ) 使用 queryset(在不同的模型上运行 - OnetToOne键入上面的 FinalModel )语句获取正确的完整对象。

因此,简而言之,我首先使用 slug (Model=FinalModel) 提取PK,然后在另一个模型(queryset 模型)上使用此PK,该模型OneToOne键控到FinalModel(使用 owner 属性)。

不确定使用两个这样的语句对数据库是否有效(我也不是这方面的专家) - 我想知道是否有人可以建议我如何将这两个语句(pkidqueryset )结合起来更有效地获得最终对象。

对不起,如果这是一个 django 101 问题。

如果您展示模型,这将更容易回答。但是假设owner是从 FinalModel 到最后想要获得的任何模型的外键,您可以使用双下划线语法来执行 JOIN:

obj = MyModel.objects.get(owner__slug=slug)

(请注意,您不需要指定exact,这是默认值。

最新更新