如何根据Django中相同模型的其他字段ID过滤字段值
Posted
技术标签:
【中文标题】如何根据Django中相同模型的其他字段ID过滤字段值【英文标题】:how to filter field values based on other field id of same model in Django 【发布时间】:2021-11-03 15:23:48 【问题描述】:这里我要过滤每个组的所有项目
让我们将我的模型视为
class ItemsList(models.Model):
invoice_number = models.IntegerField(blank=True, null=True)
class ItemsInvoice(models.Model):
items = models.ForeignKey(ItemsList)
class StockItems(models.Model):
item_invoice = models.ForeignKey(ItemsInvoice, blank=True, null=True)
group_id = models.IntegerField(blank=True, null=True)
例如,让我们将我的数据库值视为:
item_invoice | group_id
2206 | 1
2207 | 1
2208 | 2
2209 | 3
2210 | 4
2211 | 4
2212 | 4
2213 | 5
现在我该如何编写基于 group_id 过滤 item_invoice 并基于此 item_invoice id 过滤项目并基于这些项目 id 过滤 invoice_number 的过滤语句
【问题讨论】:
我仍然不清楚你的目标是什么。 您是否要获取带有item_invoice
的StockItems
与相关的IntemsList
发票号。
基于 StockItems 的 group_id 我需要首先获取 item_invoice 的 items_id 到相关的 IntemsList 发票号
所以如果你用group_id = 4
查询,那么你想检索id为2210
、2211
和2212
的InvoiceItem
s?
我不清楚invoice_number
在这里做什么,因为StockItems
和ItemInvoice
之间存在直接联系。因此,这意味着无需查看 ItemsList
即可查询关系。
【参考方案1】:
你可以通过过滤相关StockItems
的group_id
来过滤ItemInvoice
s:
ItemsInvoice.objects.filter(stockitems__group_id=<em>my_group_id</em>).distinct()
其中 my_group_id
是我们正在寻找的group_id
。如果有多个StockItems
对象链接到同一个ItemsInvoice
和group_id
,那么由于.distinct()
[Django-doc] 调用,我们将只为每个ItemsInvoice
检索一个实例。
【讨论】:
以上是关于如何根据Django中相同模型的其他字段ID过滤字段值的主要内容,如果未能解决你的问题,请参考以下文章