Python Django:将列表添加到查询集
我是django的新手,如果这不可能或不容易,我深表歉意 我有一个视图,它接受模型的一个子集Python Django:将列表添加到查询集,python,django,Python,Django,我是django的新手,如果这不可能或不容易,我深表歉意 我有一个视图,它接受模型的一个子集 data = Terms.objects.filter(language = language_id) 子集是一种语言。对于一种语言,集合有许多概念。有些语言可能对多个概念使用同一个词,我希望在SVG图像中对这些概念使用相同的颜色。所以我接下来要做的是: for d in data: if d.term is None: d.colour = "#D3D3D3" els
data = Terms.objects.filter(language = language_id)
子集是一种语言。对于一种语言,集合有许多概念。有些语言可能对多个概念使用同一个词,我希望在SVG图像中对这些概念使用相同的颜色。所以我接下来要做的是:
for d in data:
if d.term is None:
d.colour = "#D3D3D3"
else:
d.colour = termColours[d.term]
其中termcolors是一个字典,其中键是唯一的术语,值是我想要的十六进制颜色
我想这会给我的queryset添加一个新的颜色属性。但是,当我将queryset转换为json(以便将其传递给JS)时,Color对象不在那里
terms_json = serializers.serialize('json', data)
如何在queryset中添加新的颜色元素 将查询集转换为Dict,然后修改值 Ex:
data = Terms.objects.filter(language = language_id).values()
for d in data:
if d.term is None:
d.colour = "#D3D3D3"
else:
d.colour = termColours[d.term]
如果我理解正确-你需要。可能看起来是这样的:
from django.db.models import Case, When, Value
data = Terms.objects.filter(language = language_id)
.annotate(color = Case(
When(term__isnull = True, then = "#D3D3D3"),
When(term__isnull = False, then = termColours[Value(term)]),))
这里唯一的问题是-我现在不太清楚-
termcolors[Value(term)]
,您需要测试不同的组合以获得字段term
的值 你能解释一下为什么会有帮助吗?.values()将把你的查询集变成一个字典列表。因此,它们可以根据您的意愿进行修改。这将打破“AttributeError:'dict'对象没有属性'\u meta'”的序列化行。这应该会有所帮助。