Django 序列化DRF中的foreingkey和多对多字段

Django 序列化DRF中的foreingkey和多对多字段,django,serialization,django-rest-framework,Django,Serialization,Django Rest Framework,我有这样的模型: class Category(models.Model): name = models.CharField(max_length=255) slug = models.SlugField(unique=True, max_length=255, blank=True,default=None) desc = models.TextField(blank=True, null=True ) ... class Post(models.Model

我有这样的模型:

class Category(models.Model):
    name = models.CharField(max_length=255)
    slug = models.SlugField(unique=True, max_length=255, blank=True,default=None)
    desc = models.TextField(blank=True, null=True )

    ...

class Post(models.Model):
   title = models.CharField(max_length=255)
   pub_date = models.DateTimeField(editable=False,blank=True)
   author = models.ForeignKey(User, null=True, blank=True)
   categories = models.ManyToManyField(Category, blank=True, through='CatToPost')

   ...


class CatToPost(models.Model):
    post = models.ForeignKey(Post)
    category = models.ForeignKey(Category)

    ...
class CategorySerializer(serializers.ModelSerializer):
      class Meta:
            model = Category
            fields = ('name','slug')

class PostSerializer(serializers.ModelSerializer):

      class Meta:
            model = Post  
            fields = ('id','{anything you want}','categories')
            depth = 2
以下是序列化程序:

 class CategorySerializer(serializers.ModelSerializer):
   class Meta:
        model = Category
        fields = ('name','slug')

class PostSerializer(serializers.ModelSerializer):
    categories = CategorySerializer(many=True, required=True)


    class Meta:
        model = Post
        .......
视图.py

class SingleListing(generics.RetrieveUpdateDestroyAPIView):
    queryset = Post.objects.all()
    serializer_class =Post
序列化程序


但这不会在web可浏览视图中显示“类别”字段。我只看到类别标签,但该字段的输入字段不在那里。有什么问题

DRF将不支持
many=True
,并且此
列表当前在HTML输入中不受支持。
Category
不是一个字段,而是一个模型。它将显示所有与模型相关的字段

试试这个:

序列化程序.py views.py 在web浏览器视图中显示字段


好吧,您应该这样编写序列化程序:

class Category(models.Model):
    name = models.CharField(max_length=255)
    slug = models.SlugField(unique=True, max_length=255, blank=True,default=None)
    desc = models.TextField(blank=True, null=True )

    ...

class Post(models.Model):
   title = models.CharField(max_length=255)
   pub_date = models.DateTimeField(editable=False,blank=True)
   author = models.ForeignKey(User, null=True, blank=True)
   categories = models.ManyToManyField(Category, blank=True, through='CatToPost')

   ...


class CatToPost(models.Model):
    post = models.ForeignKey(Post)
    category = models.ForeignKey(Category)

    ...
class CategorySerializer(serializers.ModelSerializer):
      class Meta:
            model = Category
            fields = ('name','slug')

class PostSerializer(serializers.ModelSerializer):

      class Meta:
            model = Post  
            fields = ('id','{anything you want}','categories')
            depth = 2

但是为什么类别字段不从类别模型中填充数据并显示为下拉字段,如在管理中?我提到的DRF将不支持
ManyToMany
显示为下拉字段。有什么方法可以做到这一点吗?