如何在django rest框架中存储外键字段?
发布时间:2020-12-20 13:12:28 所属栏目:Python 来源:网络整理
导读:我想创建一个订单,我正在尝试用户保存订单.基本上,用户在下订单时必须选择他们想要的牛奶类型.在我看来,我该怎么做?我有点困惑.以下代码没有给我任何东西,数据没有保存.我该怎么办,有人可以帮忙吗? 这是我的文件. models.py MILK_CHOICES = (('C','COW'),(
我想创建一个订单,我正在尝试用户保存订单.基本上,用户在下订单时必须选择他们想要的牛奶类型.在我看来,我该怎么做?我有点困惑.以下代码没有给我任何东西,数据没有保存.我该怎么办,有人可以帮忙吗?
这是我的文件. 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() # Stock 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,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) 解决方法
在OrderSerializer中,将milk_choice字段的序列化程序定义为MilkTypeSerializer.
class OrderSerializer(serializers.ModelSerializer): user = serializers.ReadOnlyField(source = 'user.username') milk_choice = MilkTypeSerializer() class Meta: model = Order fields = ('id','qty') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容