Как отфильтровать значения поля на основе 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]