Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django DRF序列化程序的SlugRelatedField中的特定查询集_Django_Serialization_Django Rest Framework - Fatal编程技术网

Django DRF序列化程序的SlugRelatedField中的特定查询集

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

我想序列化多个对象。“描述符”有一个SlugRelated字段,在一个项目中具有唯一的名称,但在不同的项目中可能出现相同的名称

在我的序列化程序中使用此行:

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)