Как отфильтровать значения поля на основе id другого поля той же модели в Django
Здесь я хочу отфильтровать все элементы каждой группы
рассмотрим мою модель как
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 и на основе id этого item_invoice фильтровать элементы и на основе id этих элементов фильтровать invoice_number
Вы можете фильтровать ItemInvoice
по group_id
связанным StockItems
:
ItemsInvoice.objects.filter(stockitems__group_id=my_group_id).distinct()
где my_group_id
- это group_id
, для которого мы ищем. Если существует несколько объектов StockItems
, которые ссылаются на одни и те же ItemsInvoice
и group_id
, то мы получим только один экземпляр для каждого ItemsInvoice
из-за вызова .distinct()
[Django-doc]