我有这个型号序列化器:
class QuoteTemplateSerializer(serializers.ModelSerializer):
user = serializers.PrimaryKeyRelatedField(read_only=True)
quote = QuoteSerializer()
language_list = serializers.SerializerMethodField()
class Meta:
model = QuoteTemplate
fields = ('id', 'user', 'quote', 'language_list')
这个观点:
class QuoteViewSet(ModelViewSet):
model = q.Quote
serializer_class = serializers.QuoteSerializer
permission_classes = [
GallantViewSetPermissions
]
def get_queryset(self):
return self.model.objects.filter(client__isnull=False)
class QuoteTemplateViewSet(ModelViewSet):
model = q.QuoteTemplate
serializer_class = serializers.QuoteTemplateSerializer
permission_classes = [
GallantViewSetPermissions
]
def get_queryset(self):
return self.model.objects
我想列出Quote Model和QuoteTemplate模型。但是,当列出Quote模型时,我想跳过那些没有客户端的记录,当列出QuoteTemplate模型时,我不想过滤。
如何使用我目前的观点实现这一目标?现在我的列表在这两种情况下都被过滤了。
修改
我已经尝试过使用serializers.SerializerMethodField()但是当我尝试从validated_data
中弹出信息时,我的create()和update()函数出错了。
答案 0 :(得分:0)
您应该检查您的视图集返回的内容。您确定q.Quote.objects.all_for(self.request.user).filter(client__isnull=False)
和q.QuoteTemplate.objects.all_for(self.request.user)
正在返回正确的查询集吗?序列化程序中没有逻辑,只是序列化查询集中的值。