【发布时间】:2018-08-10 17:23:56
【问题描述】:
我有一个复杂的数据模型,它涉及两个相关模型,如下所示:
class A(Model):
b = ForeignKey(B)
... # does not matter
class B(Model):
... # does not matter
def myquery() -> QuerySet:
qs = A.objects.filter(...).annotate(x=...)
# The above is 46 LOC long in reality.
# I want to return the corresponding Bs
# plus the annotation x again, as a queryset.
我正在编写一个生成 QuerySet 的 B 对象的函数。
我已经编写了复杂的 46 行代码,这些代码生成了一个 QuerySet 恰好是正确的 A 对象以及一个重要的注释 x,我需要将其保留在结果中。
剩下要做的就是转换查询集,使其返回相应的B 对象(与A 对象一对一)并重新附加x 注释。
怎么做?
【问题讨论】:
-
了解更多关于查询和注释的详细信息会有所帮助。一般来说,是否有什么东西无法改写
B上的查询? -
@kristaps 也许不是不可能,但我计算注释
x的许多属性都在A上。如果太难,我可以走@987654333@ 的路线,但我不喜欢我以后必须做的更繁琐的处理,以保留x。
标签: django django-models