我遇到了問題,我不知道正確的方式來解決它。Django顯示列表中的項目的其他信息
基本上,我的模式,稱爲任務:
class Task(models.Model):
#mto1: many task made of one template
template = models.ForeignKey(Template)
STATUS_CHOISE = (('PR', 'In process'), ('ST', 'Stopped'), ('FN', 'Finished'), ('DL', 'Deleted'),)
status = models.CharField(max_length=2, choices=STATUS_CHOISE, default='ST')
responses_required = models.IntegerField(default=0)
date_deadline = models.DateTimeField(auto_now=False, auto_now_add=False)
date_created = models.DateTimeField(auto_now_add=True, auto_now=False)
它可以有幾個答案
class Response(models.Model):
#mto1: many Responses generated for one task
task = models.ForeignKey(Template)
STATUS_CHOISE = (('PR', 'Process'), ('FN', 'Finished'))
status = models.CharField(max_length=2, choices=STATUS_CHOISE, default='ST')
date_finished= models.DateTimeField(auto_now_add=False, auto_now=True)
date_created = models.DateTimeField(auto_now_add=True, auto_now=False)
ip_address=models.IPAddressField()
現在
,我想顯示一個用戶的所有任務(其中來自從模板模型,這是完成)與關於答案的附加信息,這些答案是 - 答案給出的數量(因此哪個狀態= FN) - 總答案的數量(狀態FN或PR) - 也許一些額外的信息。
我這樣做
@login_required
def TemplateList(request):
task_list = Task.objects.filter(user=request.user)
return render_to_response('task_list.html',{'task_list':task_list}, context_instance=RequestContext(request))
但這恰恰顯示出現在模型中的數據,那我來計算的價值?
到目前爲止我用CustomTag做了它,但它似乎不是一個乾淨的解決方案。我寧願在視圖中執行邏輯,然後僅將模板用於顯示結果。 但是:如何將此值添加到任務列表的每個項目?
我必須這樣做:Passing additional data to a template in Django所以從零開始創建對象(這需要模板中的一些邏輯,因爲我必須將列表中的值與對象相匹配)?或者有沒有更好的解決方案?
我想一般的看法,像list_detail.object_list 這樣
def TaskListDetail(request):
return list_detail.object_list(
request,
queryset = Task.objects.filter(user=request.user),
template_name = 'task_list.html',
template_object_name = 'task_list',
)
但首先,它不會顯示任何東西(而其它視圖顯示的數據),第二我不知道怎麼加額外的數據以一種方式與列表中的項目匹配。
有什麼建議嗎?
看一看這個問題:http://stackoverflow.com/questions/1483424/newbie-django-adding-calculated- results-to-queryset-before-passing-to-templat –
看起來不錯,但這不允許我傳遞參數。所以如果我想要計算smt狀態='PR'和另一個狀態='ST'我必須做2個屬性函數。 – EsseTi
另一件事。我何時需要添加@property註釋以及爲什麼我不? – EsseTi