Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.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

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
Python Django超级函数没有';不要向类中添加变量_Python_Django_Django Rest Framework_Django Serializer - Fatal编程技术网

Python Django超级函数没有';不要向类中添加变量

Python Django超级函数没有';不要向类中添加变量,python,django,django-rest-framework,django-serializer,Python,Django,Django Rest Framework,Django Serializer,我试图在MozSerializer类中使用init生成新变量,以获取从另一个函数传递的数据。以下是代码: class MozSerializer(serializers.Serializer): def __init__(self, modelid, data=None): self.modelid = modelid super(MozSerializer, self).__init__(modelid=self.mod

我试图在MozSerializer类中使用init生成新变量,以获取从另一个函数传递的数据。以下是代码:

class MozSerializer(serializers.Serializer):

    def __init__(self, modelid, data=None):        
        self.modelid = modelid        
        super(MozSerializer, self).__init__(modelid=self.modelid)

    keyword = serializers.PrimaryKeyRelatedField(queryset=modelid.objects.all())
    pda = serializers.FloatField()
    upa = serializers.FloatField()

我的目标是将此“modelid”从另一个函数传递到序列化程序(第7行…queryset=modelid…。

正确的方法是在
\uuuu init\uuuuu>中添加字段:

class MozSerializer(serializers.Serializer):

    def __init__(self, *args, **kwargs):        
        modelid = kwargs.pop('modelid')
        self.fields['keyword'] = serializers.PrimaryKeyRelatedField(\
                                             queryset=modelid.objects.all())       
        super(MozSerializer, self).__init__(*args, **kwargs)

    pda = serializers.FloatField()
    upa = serializers.FloatField()

干杯,我确信我做错了什么,但如果我把它放在MozSerializer类中:keyword=serializers.PrimaryKeyRelatedField(queryset=modelid.objects.all()),我会得到一个错误,modelid仍然没有定义。当我打印kwargs时,它会返回:{'data':{'keyword':38,u'pda':23.67342552652728,u'upa':12.884365610400714}}当我认为它应该只返回模型名(Url2)时,我理解它实际上是一个模型类。如果是这种情况,则您尚未在
kwargs
中传递它。当您实例化序列化程序时,它应该类似于
MozSerializer(data=data,modelid=SomeModel)
。在我传递它之前,它是:type(modelid)-您是否删除了旧的
关键字=serializers.PrimaryKeyRelatedField(queryset=modelid.objects.all())
?我编辑了我的示例以包含整个类定义。尝试了两种方法,如果我不删除它,则会出现“modeild未定义”错误。若删除了它,那个么函数会运行,但不会将数据保存到模型中。可能是因为下面的save()函数还需要modelid:def save(self):keyword=self.validated_data['keyword']pda=self.validated_data['pda']upa=self.validated_data['upa']modelid.objects.update(pda=pda,upa=upa)