私はカウントしようとして問題があるようです。私は各アイテムが多くのステータスを保存できるリストアイテムを持っていますが、私はそれが最新のステータスだけに興味があります。今私の意見を見てください。Djangoクエリ:空の値を数えたい
storage_items = StorageItem.objects\
.filter(client=client_id,itemstatushistory__isnull=False)\
.distinct()
total_items_in_stock = [item for item in storage_items \
if item.itemstatushistory_set.latest().status.description \
not in ['Destroyed','Permanent Retrieval']]
total_items_in_stock
Destroyed
とPermanent Retrieval
と呼ばれる最新の状態を持っていないすべての項目を示します。しかし、これには問題があります。
私のデータベースには、item1 {in、out、destroyed}、item2 = {destroyed、in}、item3 = {permanent retrieve}、item4 = {}などのアイテムがあるとします。最新のステータスを検索するので、{item2}が表示されます。私は今、staockの合計アイテムでitem4も印刷したいと思っています。基本的にitem4はステータスのないアイテムです。しかし、Destroyed
またはPermanent
Retrievalではないので、リストに含める必要があります。しかし、私はこれの方法を見つけることができないようです。私はすべてを明確にしたことを願っています。あなたはStorageItem
クラスにin_stock
-methodを追加することができます別の方法として
storage_items = models.StorageItem.objects.filter(client=client_id).distinct()
total_items_in_stock = [item for item in storage_items
if not item.itemstatushistory_set.exists() or
item.itemstatushistory_set.latest().status.description not in ['Destroyed','Permanent Retrieval']]
あなたは 'total_items_in_stock'を定義する部分に何らかの理由で無効な構文を取得しているように見えます – Shehzad009