Как объединить две зависимые модели в 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}]>