我是Django的新手,来自PHP世界。我正在尝试在计算事物后向查询集添加一个字段,并且不知道该怎么做。在PHP中,我只需在数组中添加一列并将其中的内容存储在其中。
这是我的代码:
def (id):
mystuff_details = mystuff_details.objects.filter(stuff_id=id)
newthing = '';
for mystuff in mystuff_details:
newthing_lists = //some query to get another queryset
for newthing_list in newthing_lists:
newthing = newthing_list.stuffIwant
//Here I want to make some computation, and ADD something to newthing, let's say:
to_add = (mystuff.score+somethingelse)
//I've heard about the .append but I'm sure I'm screwing it up
newthing.append(to_add)
所以基本上在我的模板中,我希望能够打电话: {%for newthing in newthings_list%} {{newthing.to_add}} {%end%}
TL; DR:我基本上想从我的数据库中检索一些东西,在这个对象列表中添加一个包含计算值的字段。
让我知道,如果不清楚,我很难从PHP切换到django哈哈。
谢谢!
编辑:
所以,我正在尝试使用词典,但我必须忽略逻辑:
def (id):
mystuff_details = mystuff_details.objects.filter(stuff_id=id)
newthing = {};
for mystuff in mystuff_details:
newthing_lists = //some query to get another queryset
for newthing_list in newthing_lists:
//Newthing_list can have several times the same I, and the scores need to add up
if newthing[newthing_list.id] > 0: //This doesn't seem to work and throws an error (KeyError)
newthing[newthing_list.id] = newthing[newthing_list.id] + some_calculated_thing
else:
newthing[newthing_list.id] = some_calculated_thing
然后当我开始工作时,我不知道如何在模板中访问它:
{% for id in my_list %}
{{newthing[id]}} ? Or something like newthing.id ?
{% end %}
谢谢!
答案 0 :(得分:27)
您可以在python对象上设置任何内容:
for obj in self.model.objects.all() :
obj.score = total_score / total_posts
即使obj没有得分属性,这也会有效。在模板请求中它是这样的:
{{ obj.score }}
是的,就这么简单。 但是,如果您正在进行的计算可以在数据库中完成,则应该查看annotate。
答案 1 :(得分:3)
为什么不使用字典?
newthing = {}
newthing['your_key'] = to_add
在模板中,您可以使用以下命令访问字典值:
{{newthing.your_key}}
如果您有词典词典
,请使用for循环