【发布时间】:2023-11-16 18:47:01
【问题描述】:
我有以下序列化程序:
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',)
当我尝试访问它抱怨的网址时:
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”。
知道为什么一个可以工作而另一个不行吗?
【问题讨论】: