我正在尝试向使用序列化程序 UserSerializer 继承 AbstractUser 的模块 User 发出发布请求,但我收到错误“collections.OrderedDict”对象在现场“PhoneNumber”上不可调用。 序列化器:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model= User
fields="__all__"
def save(self, **kwargs):
user = User(
username = self.validated_data.get('username'),
first_name =self.validated_data.get('first_name'),
last_name = self.validated_data.get('last_name'),
email=self.validated_data.get('email'),
Address=self.validated_data.get('Address'),
PhoneNumber=self.validated_data('PhoneNumber'))
user.save()
用户模型:
class User(AbstractUser):
Address=models.TextField(blank=True,null=True)
PhoneNumber = models.CharField(max_length=15, blank=True,verbose_name='PhoneNumber')
cdNumber = models.CharField(max_length=16, blank=True,verbose_name='cdNumber')
cdDate=models.DateField(blank=True,null=True,verbose_name='cdDate')
cdName = models.CharField(max_length=16, blank=True,verbose_name='cdName')
def __str__(self):
return self.first_name+" "+self.last_name
答案 0 :(得分:0)
这个
class UserSerializer(serializers.ModelSerializer):
class Meta:
model= User
fields="__all__"
def save(self, **kwargs):
user = User(
username = self.validated_data.get('username'),
first_name =self.validated_data.get('first_name'),
last_name = self.validated_data.get('last_name'),
email=self.validated_data.get('email'),
Address=self.validated_data.get('Address'),
@@@
- PhoneNumber=self.validated_data('PhoneNumber'))
===
+ PhoneNumber=self.validated_data.get('PhoneNumber'))
@@@
user.save()
PS:我强烈建议使用pythonic snake_cased
字段名称而不是通常用于类型的PascalCased
字段名称。
或者尝试至少为每个类使用单一命名约定..因为这不是很受欢迎:
last_name = self.validated_data.get('last_name'),
PhoneNumber=self.validated_data.get('Address'),
您可以在 PEP8
中找到更多代码风格建议