Django query: Want to count an empty value
我想数数好像有问题。我有一个列表项,每个项目可以存储许多状态,尽管我只对它的最新状态感兴趣。现在看看我的观点。
1 2 3 4 5 6 7 | 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']] |
假设我的数据库中有一些项目,比如item1 in、out、destroyed,item2 destroyed、in,item3 permanent retrieve,item4。因为它查找最新状态,所以将打印项2。我现在想在Staock中打印项目4。基本上,项目4是一个没有状态的项目。但由于它不是
模板
1 | {{total_items_in_stock|length}} |
作为一种替代方法,您可以将一个
沿着这些线的东西:
1 2 3 | def in_stock(self): if 'destroyed' and 'permanent_retrieval' not in self.itemstatushistory_set.latest().status.description: return True |
然后你可以简化你的列表理解:
1 | total_items_in_stock = [item for item in storage_items if item.in_stock()] |
试试这个:
1 2 3 4 5 | 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']] |