Как выбрать несколько элементов с несколькими количествами в django rest framework?
Models.py
class BaseModel(models.Model):
branch = models.ForeignKey(Branch, on_delete=models.PROTECT, blank=True, null=True)
company = models.ForeignKey(Company, on_delete=models.PROTECT, blank=True, null=True)
class Meta:
abstract = True
class MealMenu(BaseModel):
employee = models.ForeignKey(Employee, on_delete=models.PROTECT, null=True, blank=True)
item_name = models.CharField(max_length=50, null=True, blank=True)
quantity = models.PositiveIntegerField()
price = models.FloatField()
def __str__(self):
return f"{self.item_name} {self.price}"
class MealOrder(BaseModel):
RECEIVED = 'Received'
PENDING = 'Pending'
REJECTED = 'Rejected'
MEAL_CHOICES = (
('Breakfast', 'Breakfast'),
('Lunch', 'Lunch'),
('Dinner', 'Dinner'),
)
STATUS_CHOICES = (
(RECEIVED, 'Received'),
(PENDING, 'Pending'),
(REJECTED, 'Rejected'),
)
id = models.UUIDField(primary_key=True, default=uuid.uuid4, null=False)
total_items = models.IntegerField(null=True, default=0)
total_amounts = models.FloatField(default=0.0)
menu = models.ForeignKey(MealMenu, on_delete=models.PROTECT)
quantity = models.PositiveIntegerField(default=1, blank=False)
meal_time = models.CharField(max_length=25, choices=MEAL_CHOICES)
employee = models.ForeignKey(Employee, on_delete=models.PROTECT)
date = models.DateField(auto_now=True)
status = models.CharField(max_length=25, choices=STATUS_CHOICES, default=PENDING)
У меня есть две модели. В первой модели я создал название_пункта меню, цену и количество. В MealOrder у меня есть внешний ключ MealMenu Model и создано отдельное поле количества. Я хочу выбрать несколько пунктов с их количеством. Но я не могу понять сценарий.
Таким образом, вы можете иметь отдельную модель для обработки количества для различных товаров в заказе.
Например, так:
class MealOrderItem(BaseModel):
order = models.ForeignKey(
MealOrder, on_delete=models.PROTECT, null=True, blank=True
)
quantity = models.PositiveIntegerField()
meal = ForeignKey(
MealMenu, on_delete=models.PROTECT, null=True, blank=True
)
Это поможет вам создать несколько вариантов меню блюд для заказа, каждый из которых будет иметь свое количество.