Django - 将字段添加到查询集以存储计算结果 [英] Django - Add field to queryset to store computation results
问题描述
我是 Django 的新手,来自 PHP 世界.我试图在计算完之后将一个字段添加"到查询集中,但不知道该怎么做.在 PHP 中,我只需在数组中添加一列并将我的内容存储在其中.
I'm pretty new to Django and come from the PHP world. I'm trying to 'add' a field to a queryset after computing things, and don't know how to do it. In PHP I would just add a column in an array and store my stuff in it.
这是我的代码:
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 newthings_list %}{{ newthing.to_add }}{% 结束 %}
So basically in my template I'd like to be able to call: {% for newthing in newthings_list %} {{ newthing.to_add }} {% end %}
TL;DR: 我基本上想从我的数据库中检索一个东西列表,并在这个对象列表中添加一个包含计算值的字段.
TL;DR: I basically want to retrieve a list of stuff from my database, and in this list of objects ADD a field that will contain a computed value.
如果不清楚,请告诉我,我很难从 php 切换到 django 哈哈.
Let me know if it's unclear, I'm having a hard time switching from php to django haha.
谢谢!
所以,我正在尝试使用字典,但我一定缺少逻辑:
So, I'm trying with a dictionnary, but I must be missing the logic:
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
然后当我开始工作时,我不知道如何在模板中访问它:
And then when I'll get that working, I don't know how to access it in the template:
{% for id in my_list %}
{{newthing[id]}} ? Or something like newthing.id ?
{% end %}
谢谢!
推荐答案
为什么不使用字典?
newthing = {}
newthing['your_key'] = to_add
在模板中,您可以通过以下方式访问字典值:
In the template, you can access dictionary values with:
{{newthing.your_key}}
如果你有字典,或者使用 for 循环
Or use the for loop if you have a dictionary of dictionaries
这篇关于Django - 将字段添加到查询集以存储计算结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!