[英]Storing objects into dictionary in Django
我在數據庫中存儲了一些錯誤,因此可以輕松地在視圖之間發送它們。 這是我的models.py:
class Errors(models.Model):
error_number = models.IntegerField(primary_key=True)
error_message = models.CharField(max_length=45)
status = models.BooleanField(default=0)
datetime = models.DateTimeField(auto_now=True)
我想將錯誤放入字典中,以便以后將其傳遞給模板。 我希望僅當狀態為True / 1時才發生這種情況。視圖是否是執行此操作的正確方法?
現在,由於我在調用Errors.objects.all()時泛濫了newtwork,因此我認為這是一個不好的程序,但是我不知道如何實現for循環。
def index(request):
err = {'error_numbers':[], 'error_messages': [], 'datetime':[], 'test':[]}
warnings = Errors.objects.all()
for warning in warnings:
if Errors.objects.filter(status='1'):
err['error_numbers'].append(warning.error_number)
err['error_messages'].append(warning.error_message)
err['datetime'].append(warning.datetime)
return render(request, "index.html", err)
我還可以問如何將相同錯誤的所有數據(即錯誤號,錯誤消息和日期時間)分組到模板中以一起顯示嗎? (PS我確實意識到,以SO要求代碼是不行的,因此,這對於願意共享一些有用站點或示例的任何人來說都是可選的)。
下面的示例(正如我在moemnt上所使用的)完全不打印任何內容。
<ul>
{% for key, value in err.iteritems %}
<li>{{key}: {{value}}</li>
{% endfor %}
</ul>
關於您共享的代碼,有很多話要說。
首先,我不太確定為什么您真的需要具有這種結構的字典。 您想要的輸出是什么?
其次,這段代碼很爛:
for warning in warnings:
if Errors.objects.filter(status='1'):
....
status
是一個BooleanField
。 您應該使用布爾值對其進行過濾。 另一方面,為什么需要迭代過濾掉整個數據庫? 你的意思是這樣嗎?
for warning in warnings:
if warning.status:
...
另一件事是您選擇的命名。 最好給模型起一個單數的名字。 使用Error
而不是Errors
。
如果您確實需要執行以下操作。 我建議您使用collections.defaultdict
。 它將允許動態添加帶有list
鍵。
from collections import defaultdict
err = defaultdict(list)
for warning in warnings:
if warning.status:
err['error_numbers'].append(warning.error_number)
err['error_messages'].append(warning.error_message)
err['datetime'].append(warning.datetime)
但是,再次看來,您正在嘗試實現某些目標。 您可能應該重新考慮您的需求和方法。
畢竟,這應該打印出一個鍵和每個鍵的列表。
<ul>
{% for key, values in err.iteritems %}
<li>{{key}}: #edited here, 1 "}" was missing
{% for value in values %}{{value}}{% endfor %}
</li>
{% endfor %}
</ul>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.