gpt4 book ai didi

python - 从 Django QuerySet 中获取所有值以及从相关模型中获取附加字段

转载 作者:太空宇宙 更新时间:2023-11-03 11:59:49 25 4
gpt4 key购买 nike

我想知道是否有从 Django 模型获取所有字段并仅定义通过连接(或多个连接)检索的附加字段的快捷方式。

考虑如下模型:

class A(models.Model):
text = models.CharField(max_length=10, blank=True)

class B(models.Model):
a = models.ForeignKey(A, null=True, on_delete=models.CASCADE)
y = models.PositiveIntegerField(null=True)

现在我可以使用 values()像这样的功能

B.objects.values('y', 'a__text')

B 模型中获取包含指定值的元组和从 A 模型中获取实际字段。如果我只使用

B.objects.values()

我只得到包含 B 模型字段的元组(即 y 和外键 ID a)。假设 BA 有很多字段,我对所有属于 B 的字段感兴趣,但只对一个字段感兴趣从 A. 手动指定 values() 调用中的所有字段名称是可能的,但是乏味且容易出错。

那么有没有一种方法可以指定我想要所有本地字段,但只需要(少数)特定的连接字段?

注意:我目前使用的是 Django 1.11,但如果解决方案仅适用于较新的版本,我也对此感兴趣。

最佳答案

您可以为此使用prefetch_related。参见 docs :

You want to use performance optimization techniques like deferred fields:

queryset = Pizza.objects.only('name')

restaurants = Restaurant.objects.prefetch_related(Prefetch('best_pizza', queryset=queryset))

在你的情况下你可以这样做:

from django.db.models import Prefetch

queryset = A.objects.only('text')
b_list = B.objects.prefetch_related(Prefetch('a', queryset=queryset))

关于python - 从 Django QuerySet 中获取所有值以及从相关模型中获取附加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52670057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com