python - 在 Django 查询中使用 values() 来获取模型而不是 ID

标签 python django

我在 Django 中有以下设置

class Class1(Model):

    search_field = IntegerField()
    field2 = ForeignKey(Class2)

class Class2(Model):

    field3 = ForeignKey(Class3)

class Class3(Model):

    #lots of useful stuff...

我正在 Class1 中进行查询,目的是取回 Class3 的实例,但是 Class1Class2 有很多我不想加载的信息,所以我想使用 values (或者让我更有效地执行此操作的东西)。我做类似的事情

q = Class1.objects.filter(search_field=search_criteria).values('field2__field3').latest()

但是当这回来时,我得到一个看起来像这样的字典:

{'field2__field3': ID}

其中 IDClass3 实例的键。有没有办法直接从 values(或其他一些查询实用程序)获取类的实例?

最佳答案

Django 查询的一个简单规则是始终查询您想要返回的内容。所以如果你想要一个 Class3,就用它开始你的查询。

Class3.objects.filter(class2__class1__search_field=search_criterion).latest()

关于python - 在 Django 查询中使用 values() 来获取模型而不是 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28993293/

相关文章:

python - Django - 为什么这个模型没有创建 pk 并提示相关模型的 pk 的完整性?

django - 限制用户可以上传的文件数量

python - 处理 Python 套接字中的超时错误

python - 带有 asyncio 的 UDP 服务器

python - 如何在不破坏向后兼容的情况下将一个模块拆分为多个文件?

python - matplotlib如何设置图形窗口的绝对位置?

Python 新手和不支持的操作数

python - 属性错误: Generic detail view must be called with either an object pk or a slug

python - 模板渲染 Django 1.6 期间的 Dijan 错误

python - Django 的 YearArchiveView 通用日期 View