I'm trying to make a simple pizza order app in Django. I have 3 models (Toppings, Pizzas, Orders). In Orders model have ManyToManyField to Pizza. It's working fine if "user" orders one each pizza (Margarita and Pepperoni for example) but if order 2 Margarita in POST request I got only one Margarita ID in my result. How i can pass n-pizzas in one Order?
My models looks like this:
class Toppings(models.Model):
name = models.CharField(blank=False, max_length=100, unique=True)
class Meta:
ordering = ['name']
def __str__(self):
return self.name
class Pizza(models.Model):
name = models.CharField(blank=False, max_length=100, unique=True)
ingredients = models.ManyToManyField(Toppings, blank=False, null=False)
class Meta:
ordering = ['name']
def __str__(self):
return self.name
class PizzaOrder(models.Model):
created = models.DateTimeField(auto_now_add=True)
items = models.ManyToManyField(Pizza, blank=False, null=False)
status = models.CharField(max_length=1, choices=[
(1, 'placed'),
(2, 'approved'),
(3, 'cooked'),
(4, 'delivered'),
(5, 'canceled')
], default=1)
class Meta:
ordering = ['created']
def __str__(self):
return self.created
I send POST with this data:
{
"items": [1, 1, 1, 2, 2],
"status": 1
}
and got this only 1 and 2 in items list (not 1,1,1,2,2):
{
"id": 2,
"items": [
1,
2
],
"status": 1
}
Serializer and view for Order
class OrdersSerializer(serializers.ModelSerializer):
class Meta:
model = PizzaOrder
fields = ['id', 'items', 'status', 'created']
class PizzaOrdersList(ModelViewSet):
queryset = PizzaOrder.objects.all()
serializer_class = OrdersSerializer