I want to create an order, I'm trying to save a milk order by a user. Basically, the user must choose what type of milk he wants when placing an order. What should I do from my point of view? I'm a little confused. The following code does not give me anything, the data is not saved. What should I do, can someone help?
Here are my files. models.py
MILK_CHOICES = (
('C', 'COW'),
('B', 'BUFFALO'),
('FC', 'FULL CREAM')
)
class MilkType(models.Model):
type = models.CharField(max_length = 20, choices = MILK_CHOICES, default = MILK_CHOICES[0][1])
quantity = models.PositiveIntegerField()
description = models.CharField(max_length = 100)
class Order(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
milk_choice = models.ForeignKey(MilkType)
qty = models.PositiveIntegerField(default = 1)
serializers.py
class UserSerializer(serializers.ModelSerializer):
orders = serializers.PrimaryKeyRelatedField(many=True, queryset=Order.objects.all())
class Meta:
model = CustomUser
fields = ('id', 'username', 'email')
class MilkTypeSerializer(serializers.ModelSerializer):
class Meta:
model = MilkType
fields = ('id', 'type', 'quantity', 'description')
class OrderSerializer(serializers.ModelSerializer):
user = serializers.ReadOnlyField(source = 'user.username')
class Meta:
model = Order
fields = ('id', 'user', 'milk_choice', 'qty')
views.py
class OrderList(APIView):
def get(self, request, format = None):
orders = Order.objects.all()
serializer = OrderSerializer(orders, many = True)
return Response(serializer.data)
def post(self, request, format = None):
serializer = OrderSerializer(data = request.data)
if serializer.is_valid():
serializer.save(user = request.user)
return Response(serializer.data, status = status.HTTP_201_CREATED)
return Response(serializer.errors, status = status.HTTP_400_BAD_REQUEST)