У меня есть две модели:
class Product(models.Model):
name = models.CharField(max_length=255)
price = models.FloatField()
def __str__(self):
return self.name
class ProductReview(models.Model):
review = models.CharField(max_length=500)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
def __str__(self):
return self.review
класс представления:
class ProductReviewAPIView(APIView):
def get(self, request):
pass
def post(self, request, *args, **kwargs):
product = Product.objects.get(id=kwargs['product_id'])
serializer = ProductReviewSerializer(product, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
else:
return Response(serializer.errors)
Мои классы сериализатора:
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = "__all__"
class ProductReviewSerializer(serializers.ModelSerializer):
product = ProductSerializer(required=False)
class Meta:
model = ProductReview
fields = "__all__"
def create(self,product, validated_data):
product_review = ProductReview.objects.create(product=product, **validated_data)
return product_review
Так что теперь я вызываю API as:
http://127.0.0.1:8000/product/review/1/
1
является идентификатором продукта. и этот продукт уже существует в базе данных. Теперь, когда я создаю обзор продукта, он должен создать обзор и просто поместить 1
в качестве внешнего ключа в столбец product_id
.
Как мне это сделать?