1

我正在尝试使用init在 MozSerializer 类中创建新变量以获取从另一个函数传递的数据。这是代码:

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 ...)。

4

1 回答 1

1

正确的方法是动态__init__添加字段:

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()
于 2015-10-11T10:46:51.193 回答