Django 在rest框架中获取反向关系对象

Django 在rest框架中获取反向关系对象,django,django-views,django-rest-framework,Django,Django Views,Django Rest Framework,如何从serializers.py中的反向关系获取对象 我有一个这样的模型 class Post(models.Model): title = models.CharField(max_length=100) content = models.TextField() def __str__(self): return self.title class Category(models.Model): post = models.Fore

如何从serializers.py中的反向关系获取对象

我有一个这样的模型

class Post(models.Model):
     title = models.CharField(max_length=100)
     content = models.TextField()

     def __str__(self): 
        return self.title

class Category(models.Model):
     post = models.ForeignKey(Post, related_name='category')   
     name = models.CharField(max_length=200)
     slug = models.SlugField(max_length=70, unique=False)

     def __str__(self): 
        return self.title
从中,我可以通过相关名称直接访问该类别,这是my serializers.py

class PostSerializer(serializers.ModelSerializer): 
        class Meta:
        model = Post
        fields = ('title','content','category')
问题是视图仅返回类别post id:

HTTP 200 OK
Vary: Accept
Allow: GET, HEAD, OPTIONS
Content-Type: application/json

{
    "count": 1, 
    "next": null, 
    "previous": null, 
    "results": [
        {
            "title": "Post title 1", 
            "content": "test content..blah blah blah", 
            "category": [
                1 
            ]
        }
   ]
}
如何获取类别名称和slug???

相关的名称将只返回id,这一点都没有错。如果需要完整表示,还需要在父对象中添加每个子对象的序列化版本。像这样:

class PostSerializer(serializers.ModelSerializer): 
    category = CategorySerializer(many=True, required=False)
因此,首先需要有一个CategorySerializer,然后必须在PostSerializer中添加关系。所有参数都是可选的。这是一个小例子


注:我建议使用“类别”作为相关的名称,因为你可以有多个类别

尝试此操作后,发现“Post”对象没有属性“category”错误。您是否已将相关的名称更改为categories?哦,是的,这就是问题所在,它现在可以工作了!!谢谢