React и Django DRF
Серверная часть работает, когда я тестирую ее с помощью http-файла. и непосредственно в конечной точке.
POST http://localhost:8000/api/products/ HTTP/1.1
Content-Type: application/json
Authorization: Bearer my_access_token
{
"name": "test",
"price": 23,
"stock": 3,
"description": "test description",
"in_sale": true,
"sale_price": 21,
"color": [
{
"name":"black",
"color_code": "#000000"
}
]
}
Однако, когда я заполняю формы, созданные в react jsx, и отправляю их в API, я получаю ключевую ошибку, когда оставляю Color Nested Serializer активным, когда я удаляю его, я получаю неверный запрос.
Вот мой serializer.py
class ProductCreateSerializer(serializers.ModelSerializer):
class ColorCreateSerializer(serializers.ModelSerializer):
class Meta:
model = Color
fields = ('name', 'color_code')
# color = ColorCreateSerializer(many=True, required=False)
def update(self, instance, validated_data):
# color_data = validated_data.pop("color")
with transaction.atomic():
instance = super().update(instance, validated_data)
if color_data is not None:
instance.color.all().delete()
for item in color_data:
Color.objects.create(product=instance, **item)
return instance
def create(self, validated_data):
color_data = validated_data.pop('color')
with transaction.atomic():
product = Product.objects.create(**validated_data)
for item in color_data:
Color.objects.create(product=product, **item)
return product
class Meta:
model = Product
fields = (
'id',
'name',
'description',
'price',
'stock',
'in_sale',
'sale_price',
'image',
'color'
)
extra_kwargs = {
'id': {'read_only': True}
}
Вот мой views.py
class ProductView(viewsets.ModelViewSet):
queryset = Product.objects.all()
serializer_class = ProductSerializer
permission_classes = [AllowAny]
def list(self, request, *args, **kwargs):
return super().list(request, *args, **kwargs)
def perform_create(self, serializer):
product = serializer.save(user=self.request.user)
def get_serializer_class(self):
if self.action == 'create' or self.action == 'update':
return ProductCreateSerializer
return super().get_serializer_class()
И, наконец, мой файл createProduct.jsx
Что здесь не так??? Если конечные точки работают, это должна быть ошибка интерфейса, верно? Я новичок в React. Пробую использовать FullStack. Пожалуйста, помогите!