我正在尝试将数据发布到我的订单模型中。它有几个外键。当我尝试发布数据时,它也在尝试在引用的模型中创建对象。我的models.py:
from django.db import models
from django.contrib.auth.models import User
from accounts.models import Profile
class Nursery(models.Model):
name = models.CharField(max_length=30,unique=True)
state = models.CharField(max_length=40)
city = models.CharField(max_length=40)
profile = models.OneToOneField(Profile,on_delete=models.CASCADE)
class Plants(models.Model):
name = models.CharField(max_length=30,unique=True)
image = models.ImageField(upload_to='static/plants')
price = models.IntegerField()
nursery = models.ForeignKey(Nursery,on_delete=models.CASCADE)
class Order(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE)
product = models.ForeignKey(Plants,on_delete=models.CASCADE)
date_ordered = models.DateTimeField(auto_now=True)
order_id = models.UUIDField(auto_created=True)
is_purchased = models.BooleanField(default=False)
cost = models.IntegerField()
quantity = models.IntegerField()
nursery = models.ForeignKey(Nursery,on_delete=models.CASCADE)因此,我尝试将数据发布到订单模型中,它给出了错误Plant name already exists,这意味着它还试图在植物和苗木模型中创建一行。我的serializers.py:
from .models import Plants,Order,Nursery
from rest_framework import serializers
class NurserySerializer(serializers.ModelSerializer):
class Meta:
model = Nursery
fields = "__all__"
class PlantSerializer(serializers.ModelSerializer):
nursery = NurserySerializer()
# nursery = NurserySerializer()
class Meta:
model = Plants
fields = ['name', 'price','image','nursery']
class OrderSerializer(serializers.ModelSerializer):
user_name = serializers.CharField(source='user.username', read_only=True)
product = PlantSerializer()
nursery = serializers.CharField(source='nursery.name', read_only=True)
class Meta:
model = Order
fields = ['user_name', 'product','date_ordered','order_id','is_purchased','cost','quantity','nursery']Views.py:
class PostOrder(APIView):
def post(self, request, format=None):
print(request.data)
serializer = OrderSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)发布于 2021-01-05 17:48:58
你能做到的,
对不起,我不明白您想在哪里创建新行
from .models import Plants,Order,Nursery
from rest_framework import serializers
class NurserySerializer(serializers.ModelSerializer):
class Meta:
model = Nursery
fields = "__all__"
class PlantSerializer(serializers.ModelSerializer):
nursery = NurserySerializer(read_only=True)
# nursery = NurserySerializer()
class Meta:
model = Plants
fields = ['name', 'price','image','nursery']
class OrderSerializer(serializers.ModelSerializer):
user = serializers.SlugRelatedField(read_only=True,slug_field='username')
product = PlantSerializer(read_only=True)
nursery = NurserySerializer(read_only=True)
class Meta:
model = Order
fields = ['user', 'product','date_ordered','order_id','is_purchased','cost','quantity','nursery']https://stackoverflow.com/questions/65575604
复制相似问题