我想显示一个字段的名称,而不是它的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
}
谢谢!
答案 0 :(得分:1)
好吧,将 many = True 添加到序列化程序中解决了我的问题...让我哑巴
class ComercialListSerializer(serializers.ModelSerializer):
tags = TagListSerializer(many=True)