Python Django超级函数没有';不要向类中添加变量
我试图在MozSerializer类中使用init生成新变量,以获取从另一个函数传递的数据。以下是代码: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
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)