Django Rest framework | TypeError: Поле 'id' ожидало число, но получило OrderedDict()
Я пытаюсь загрузить товар с несколькими изображениями и указать категорию или автора товара. но получаю ошибку TypeError: Поле 'id' ожидало число, но получило OrderedDict().
Models.py##
class Product(models.Model):
name = models.CharField(max_length=100, unique=True)
description = models.TextField(max_length=5000, blank=True, null=True)
price = models.CharField(max_length=100, )
discount = models.CharField(max_length=100, )
length = models.CharField(max_length=100)
width = models.CharField(max_length=100)
depth = models.CharField(max_length=100)
category = models.ForeignKey(
Category, null=True, blank=True, on_delete=models.CASCADE)
author = models.ForeignKey(
User, editable=False, null=True, blank=True, on_delete=models.CASCADE)
status = models.CharField(max_length=1, choices=statuses, default='1')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
class Meta:
db_table = 'products'
verbose_name = 'Product'
verbose_name_plural = 'Products'
Serializers.py
class ProductSerializer(serializers.ModelSerializer):
author = AuthorSerializer(many=False,)
category = ProductCategorySerializer(many=False,)
images = ProductImageSerializer(many=True, read_only=True)
class Meta:
model = Product
fields = ('id', 'name', 'description', 'price', 'discount',
'length', 'width', 'depth', 'status', 'images', 'category', 'author', 'created_at', 'updated_at')
def create(self, validated_data):
name = validated_data.get("name")
description = validated_data.get("description")
price = validated_data.get("price")
discount = validated_data.get("discount")
length = validated_data.get("length")
width = validated_data.get("width")
depth = validated_data.get("depth")
status = validated_data.get("status")
category = validated_data.get('category')
# category = validated_data.pop('category')
author = validated_data.get("author")
# author = validated_data.pop('author')
imgs = self.context.get('view').request.FILES
product = Product.objects.create(
name=name,
description=description,
price=price,
discount=discount,
length=length,
width=width,
depth=depth,
status=status,
category_id=category,
author_id=author
)
for image in imgs.values():
ProductImage.objects.create(image=image, product=product)
return product
Views.py
class ProductApi(viewsets.ModelViewSet):
queryset = Product.objects.all().order_by('id')
serializer_class = ProductSerializer
parser_classes = [MultiPartParser]
filter_backends = [DjangoFilterBackend, OrderingFilter]
filterset_fields = ["id", "name", "description",
"length", "width", "depth", "status"]
pagination_class = pagination
authentication_classes = authclass
permission_classes = [IsAdminUser, IsAuthenticated]
Urls.py
router.register("category", CategoryApi, basename="AdminCategoryApi")
router.register("product", ProductApi, basename="AdminProductApi")
Index.js
Вот фактический код. Не получаю требуемого результата. Помогите мне разобраться в проблеме.