因此,我试图向来自同一模型的两个独立的查询集添加一个临时属性,但似乎只要我尝试将它们合并在一起,新字段就会消失。在
示例:
class IndexView(View):
def get(self, request):
q1 = MyModel.objects.filter(points=0)
q2 = MyModel.objects.filter(points=100)
for q in q1:
q.title = 'Loser'
print(q.title) # Prints 'Loser'
for q in q2:
q.title = 'Winner'
print(q.title) # Prints 'Winner'
q = q1 | q2 # Merges the two QuerySets together
for item in q:
print(item.title) # ERROR: "Title" is not a field anymore apparently...
return render(request, 'index.html', {})
我尝试过另一种方法,它使用.chain()
(在另一个线程中提到),但是它将类型从QuerySet
更改为{title
属性是临时的,这样我就可以在模板中分隔项目。而且,points
过滤器不是实际的过滤器,实际上要复杂得多,因此模板标记和模型方法不是一个选项。在
Django v1.9.6
Python v3.4.3
你不可能做到这一点,因为当你这样做的时候:
您正在执行一个新的数据库查询。没有直接的方法,只能一起查询,然后分别标记:
^{pr2}$考虑到关于
points
的复杂情况,您还可以为模型MyModel
创建一个方法,然后调用该函数返回一个类似于将title
分配给它的值。在相关问题 更多 >
编程相关推荐