Django 小bug解决集
- 序列化器返回对象属性问题
django.core.exceptions.ImproperlyConfigured: Field name “token” is not valid for model “User”
在使用django序列化器时,当需要在返回的模型类对象添加相应属性,且不需要保存至数据库时,需要在返回对象调用save()方法保存至数据库之后,为对象添加属性,以下用jwt token进行举例
def create(self, validated_data):
del validated_data['sms_code']
del validated_data['password2']
del validated_data['allow']
user = super(UserSerializer, self).create(validated_data)
user.set_password(validated_data['password'])
user.save()
jwt_payload = api_settings.JWT_PAYLOAD_HANDLER
jwt_encode = api_settings.JWT_ENCODE_HANDLER
payload = jwt_payload(user)
token = jwt_encode(payload)
user.token = token
return user
在调用save()方法后,为对象添加token属性,所以序列化器也需要添加read_only的序列化字段
class UserSerializer(seri