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方法。你可以导入其他模型并执行任何操作