Django Rest Framework - Создание объекта с отношением с первичным ключом

Я создал простой REST API, с помощью которого я хочу создавать объекты продуктов. Моя проблема в том, что API представление не показывает мне поле множественного выбора для выбора из существующих категорий.

models.py

from django.db import models 

class Category(models.Model):
    name = models.CharField(max_length=20)

    def __str__(self):
        return self.name
    class Meta:
        ordering = ('name',)

class Product(models.Model):
name = models.CharField(max_length=200, unique=True)
price = models.PositiveSmallIntegerField(default="")
category = models.ForeignKey(Category, on_delete=models.CASCADE, blank=True, default=None)

def __str__(self):
    return self.name

class Meta:
    ordering = ('name',)

serializers.py

from rest_framework import serializers
from .models import Product, Category


class ProductSerializer(serializers.ModelSerializer):
    class Meta:
        model = Product
        fields = '__all__'

class CategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = Category
        fields = '__all__'

views.py

from django.shortcuts import render
from django.http import HttpResponse
from rest_framework import viewsets
from .models import Product, Category
from .serilaizers import ProductSerializer, CategorySerializer
from rest_framework.response import Response
from rest_framework.views import APIView

class ProductView(viewsets.ModelViewSet):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer
    

class CategoryView(viewsets.ModelViewSet):
    queryset = Category.objects.all()
    serializer_class = CategorySerializer

Вот что я получаю после запуска сервера, только две позиции

__all__ не работает с ForeignKey и другими полями отношений. Вам необходимо указать имена полей явно. Добавьте список или кортеж с именами полей к вашему ProductSerializer.

class ProductSerializer(serializers.ModelSerializer):
    class Meta:
        model = Product
        fields = ("name", "price", "category")
Вернуться на верх