您好,我似乎遇到查詢問題。我有一個項目列表。任何物品都可以設置爲它的狀態(進出,收集,銷燬等)。這是我的看法。查詢使用過濾條件查找相關表格中最近的條目
def client_summary(request, client_id):
client = None
items = None
try:
client = models.Client.objects.get(pk = client_id)
items = client.storageitem_set.all()
total_items = items.count()
except:
return HttpResponse(reverse(return_clients))
return render_to_response('client_summary.html', {'items':items, 'total_items':total_items, 'client':client}, context_instance = RequestContext(request))
如果我有我的模板
{%for item in items%}
{{item.itemstatushistory_set.latest}}
{%endfor%}
這將顯示所有的最新狀態。現在我只想打印出狀態爲「僅銷燬」的所有項目。出於某種原因,我似乎無法做到這一點。
以下是我的模型的一些更多信息。
class StorageItem(models.Model):
type = models.ForeignKey(StorageObject)
client = models.ForeignKey(Client)
company_id = models.PositiveIntegerField(unique = True, blank = True, null = True)
content = models.TextField(blank = True)
alternative_id = models.CharField(verbose_name = 'Client no.', max_length = 60, blank = True)
title = models.CharField(max_length = 100)
format = models.ForeignKey(Format, blank = True, null = True)
location = models.CharField(max_length = 20, blank = True)
item_class = models.TextField(blank = True)
def __unicode__(self):
return self.title
class Status(models.Model):
description = models.CharField(max_length = 60)
notes = models.TextField(blank = True)
def __unicode__(self):
return self.description
class Meta:
verbose_name_plural = 'Status'
get_latest_by = 'date'
ordering = ['date']
class ItemStatusHistory(models.Model):
date = models.DateTimeField(auto_now = True)
contact = models.ForeignKey(Contact)
item = models.ForeignKey(StorageItem)
status = models.ForeignKey(Status)
user = models.ForeignKey(User)
def __unicode__(self):
return str(self.status
編輯:還有一些問題,因爲一個項目的關係可以有許多狀態。但是我只想列出最近的狀態僅用於銷燬物品。
示例:假設有3個項目,他們有套item1 = [in, out, destroyed]
,item2 = [destroyed, in]
,item3 = [destroyed
,collected, destroyed]
,item4 = [in]
其中[1st status, 2nd status, 3rd status, etc]
。我只想顯示該項目的最新狀態。
Mike和kriegar都會得到類似[item1, item2, item3, item3]
的結果。 由於Yuji使用了不同的功能,他將得到[item1, item2, item3]
。
我需要在最後得到的答案應該是[item1, item3]
。
您是否在尋找* _only_ *已銷燬狀態的物品?或具有*任何*毀壞狀態的物品? – 2011-03-29 13:56:08
@Yuji對於遲到的回覆感到抱歉。你的解決方案几乎是對的。但是,因爲用戶可以更改商品狀態,所以我只希望商品具有_destroyed_狀態,如果這有_latest status_。因此,一個物品可能會在一週內遭到破壞,但它的狀態會由用戶更改爲收集。一旦它的狀態改變了。它不應該在_destroyed_狀態列表中。你的代碼所做的是在任何項目中查找它是否具有_destroyed_狀態。然後打印。它應該只在_destroyed_是最新狀態時纔打印。 – Shehzad009 2011-03-29 14:42:08