Django DRF序列化程序的SlugRelatedField中的特定查询集
我想序列化多个对象。“描述符”有一个SlugRelated字段,在一个项目中具有唯一的名称,但在不同的项目中可能出现相同的名称 在我的序列化程序中使用此行:Django DRF序列化程序的SlugRelatedField中的特定查询集,django,serialization,django-rest-framework,Django,Serialization,Django Rest Framework,我想序列化多个对象。“描述符”有一个SlugRelated字段,在一个项目中具有唯一的名称,但在不同的项目中可能出现相同的名称 在我的序列化程序中使用此行: row = serializers.SlugRelatedField(slug_field="name", queryset=Descriptor.objects.all() ) def get_fields(self, *args, **kwargs): fields = super(CellCESaveSerializer, s
row = serializers.SlugRelatedField(slug_field="name",
queryset=Descriptor.objects.all() )
def get_fields(self, *args, **kwargs):
fields = super(CellCESaveSerializer, self).get_fields(*args, **kwargs)
fields['row'].queryset = Descriptor.objects.filter(project=self.context['id'])
return fields
导致错误,因为返回了多个描述符。我需要这样的东西:
row=serializers.SlugRelatedField(slug\u field=“name”,
queryset=Descriptor.objects.filter(project=projectd))
验证时,这会导致name错误:未定义名称“projectid”
。
调用
is valid
方法时是否可以传递projectid
变量,以便指定查询集?进一步搜索后,我找到了一个似乎有效的解决方案
我所做的是将以下内容添加到序列化程序:
row = serializers.SlugRelatedField(slug_field="name",
queryset=Descriptor.objects.all() )
def get_fields(self, *args, **kwargs):
fields = super(CellCESaveSerializer, self).get_fields(*args, **kwargs)
fields['row'].queryset = Descriptor.objects.filter(project=self.context['id'])
return fields
并通过上下文提交了项目的id
serializer = CellCESaveSerializer(Cells, data=data,many=True, context = {'id':id, 'descriptoridlist' : descriptoridlist}, partial=True)