Django rest framework django rest框架向ModelSerializer添加字段

Django rest framework django rest框架向ModelSerializer添加字段,django-rest-framework,Django Rest Framework,我有以下序列化程序: class AMXModXAdminsSerializer(mixins.GetCSConfigMixin, serializers.ModelSerializer): admin = serializers.CharField(label='Admin', max_length=35, required=True, write_only=True) password = serializers.CharField(label='Password', max

我有以下序列化程序:

class AMXModXAdminsSerializer(mixins.GetCSConfigMixin, serializers.ModelSerializer):
    admin = serializers.CharField(label='Admin', max_length=35, required=True, write_only=True)
    password = serializers.CharField(label='Password', max_length=35, required=False, write_only=True)
    access_flags = serializers.MultipleChoiceField(choices=ACCESS_FLAGS_OPTIONS, required=True, write_only=True)
    account_flags = serializers.MultipleChoiceField(choices=ACCOUNT_FLAGS_OPTIONS, required=True, write_only=True)

    class Meta:
        model = CS16Server
        fields = ('name', 'amxadmins', 'admin', 'password', 'access_flags', 'account_flags')
        read_only_fields = ('name', 'amxadmins',)
当我尝试访问url时,它会抱怨:

Got AttributeError when attempting to get a value for field `admin` on serializer `AMXModXAdminsSerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `CS16Server` instance.
Original exception text was: 'CS16Server' object has no attribute 'admin'.
如果我只向每个字段添加write_,错误就会消失

问题是,对于同一个模型,我有一个类似的序列化程序,其中包含不属于该模型的字段,它可以完美地工作,而无需向每个字段添加“write_only=True”

你知道为什么一个可以工作而另一个不行吗?

你说的“当我访问时”是什么意思?贴上补丁

错误是:

'CS16Server' object has no attribute 'admin'.
是吗?如果没有,你打算写在哪里? 如果模型没有admin字段(如错误中所述),则需要如下内容:

class AMXModXAdminsSerializer(mixins.GetCSConfigMixin, serializers.ModelSerializer):
    admin= serializers.SerializerMethodField()
    fields ...
    ...
    def get_admin(self, obj):
        do somthing with self (contains the request) or the obj you're working on 
        return theOUTcome

如果设置required=False,它将不再抱怨,因为它不会尝试从db获取这些字段的值。

我只是在发布内容时需要它,然后我将获取值并将其引入另一个字段。我有几个字段不在模型上,获取值,对它们进行操作&然后在模型上存在的字段上引入一个新值。逻辑应该输入get_admin方法。你可以导入其他模型并执行任何操作