我有以下经理:
class Totals(Manager):
def by_customer_and_date(self, start_date, end_date):
qs = self.model.objects.filter(
date__range=(start_date, end_date)
).values(
"customer"
).annotate(
...bunch of stuff...
)
return qs
其中 customer
是与另一个对象的 FK 关系。现在,查询集打包在相关的 customer
对象的 ID 中,但我希望它使用显示名称,这样我就可以为我的模板很好地打包它。
目前,我已将以下内容添加到管理器中:
for q in qs:
q['customer'] = Customer.objects.get(id=q.get('customer')).name
它工作正常,但感觉像是额外的工作。对我来说,它是 50 个数据库命中而不是一个。是否有任何快捷方式可以立即将显示名称放入 qs 字典中?
最佳答案
您可以使用__
访问相关的对象字段。
qs = self.model.objects.filter(
date__range=(start_date, end_date)
).values(
"customer__name"
)
关于Django - 如何在 queryset .values() 中获取显示名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38766494/