我有以下序列化器:
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_only,错误将消失。
事实是,对于相同的模型,我有一个类似的序列化程序,其字段不属于该模型,并且在不向每个字段添加“ write_only = True”的情况下,它也可以完美地工作。
任何人为什么会工作而另一个人不工作?
错误说:
'CS16Server' object has no attribute 'admin'.
是吗?如果不是,您打算在哪里写?如果模型没有admin字段(如error所述),则需要类似以下内容:
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