Как объединить две зависимые модели в django и получить количество каждого типа

Я новичок в django, как связать два класса моделей и извлечь из них общее количество

class FoodBatch(models.Model):
    batch_code = models.CharField(max_length=200, blank=False, null=False)
    expiry = models.DateField()
    price = models.FloatField()

class FoodItem(models.Model):
    seller_code = models.CharField(max_length=200, blank=False, null=False)
    brand = models.CharField(max_length=200, blank=False, null=False)
    quantity = models.IntegerField()
    batch = models.ManytoMany(FoodBatch)

FoodBatch должен быть уникальным для каждого FoodItem. FoodItem может быть сопоставлен с несколькими FoodBatch.

Кроме того, необходимо произвести общий подсчет количества из всех партий продуктов питания для каждого элемента питания.

Заранее спасибо.

Я не знаю, что ты хочешь сделать!!!

Но это шаги, чтобы объяснить ваш код:

1- должен быть изменен :

batch = models.ManytoMany(FoodBatch)

на этот код:

batch = models.ManyToManyField(FoodBatch)

2- создание дампа данных для тестирования:

fb1 = FoodBatch(batch_code = "100",expiry ="2022-02-02",price = 100)
fb1.save()

fb2 = FoodBatch(batch_code = "200",expiry ="2022-02-02",price = 200)
fb2.save()

fb3 = FoodBatch(batch_code = "300",expiry ="2022-02-02",price = 300)
fb3.save()

# create FoodItem instance and set tow FoodBatch instances only for it.
fi1 = FoodItem(seller_code="111",brand="A",quantity=10)
fi1.save()
fi1.batch.set([fb1,fb2])

# к дополнительному общему счету:

FoodBatch.objects.annotate(item_total = models.Sum('fooditem__quantity')).values()

# результат такой:

<QuerySet [

{'id': 1, 'batch_code': '100', 'expiry': datetime.date(2022, 2, 2), 'price': 100.0, 'item_total': 10},

{'id': 2, 'batch_code': '200', 'expiry': datetime.date(2022, 2, 2), 'price': 200.0, 'item_total': 10},

{'id': 3, 'batch_code': '300', 'expiry': datetime.date(2022, 2, 2), 'price': 300.0, 'item_total': None}]>

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