Django-字段显示为空

时间:2019-05-31 14:43:44

标签: python django django-serializer

我想显示一个字段的名称,而不是它的ID,所以我尝试了几种不同的方法,但对我没有用。我无法弄清楚为什么或找不到合适的解决方案,所以就这样: 基本上,我的视图实际上返回一个null字段,但实际上不为null。代码下面。

tags = TagListSerializer()#返回null
tags = serializers.Field(source ='tags.name')#返回null
标签= TagListSerializer#不改变任何内容

社交是从 Project 继承的,该项目是抽象的:

class Comercial(Project):
    name = models.CharField()

项目是抽象的:

class Project(models.Model):
    tags = models.ManyToManyField(Tag, blank=True, editable=True)

标记模型:

class Tag(models.Model):
    name = models.CharField(null=False)

“商业视图” ,其中按标签进行搜索:

class ListComercialAPIView(ListAPIView):
    serializer_class = ComercialListSerializer
    pagination_class = StandardResultsSetPagination

    def get_queryset(self):
        tag = self.request.GET.get('tag')
        if(tag!=None):
            return Comercial.objects.filter(tags__name=tag)
        else:
            return Comercial.objects.all()

标签序列化器

class TagListSerializer(serializers.ModelSerializer):
    class Meta:
        model = Tag
        fields = ('__all__')

最后是 ComercialSerlialzier

class ComercialListSerializer(serializers.ModelSerializer):
    tags = TagListSerializer()
    class Meta:
        model = Comercial
        fields = ('name', 'tags')

在列出Comercial对象时,我期望这样的东西:

{
"name": "Example Comercial Name"
"tags": {
         "name":"Example Tag Name"}
}

但是我得到的只是:

{
"name": "Example Comercial Name"
"tags": {
        "name": null
}

谢谢!

1 个答案:

答案 0 :(得分:1)

好吧,将 many = True 添加到序列化程序中解决了我的问题...让我哑巴

class ComercialListSerializer(serializers.ModelSerializer):
    tags = TagListSerializer(many=True)