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

Вернуться на верх