![](/img/trans.png)
[英]AttributeError: 'NoneType' object has no attribute 'append' error in Django project
[英]Django model save() - AttributeError: 'NoneType' object has no attribute 'append'
在我的models.py
,我想通过添加 email_list 来扩展 Django 用户模型。
from django.contrib.postgres.fields import ArrayField
class User(AbstractUser):
email_list = ArrayField(models.EmailField(max_length=100), null=True, blank=True)
[...]
此 email_list 必须将用户电子邮件作为默认值。 我发现最好的方法是重写save()
方法:
def save(self, *args, **kwargs):
self.email_list.append(self.email)
super(User, self).save(*args, **kwargs)
但是,当我添加用户时,出现以下错误:
AttributeError: 'NoneType' object has no attribute 'append'
而print(type(self.email_list))
返回<type 'NoneType'>
ArrayField
有什么问题?
您应该使用诸如列表之类的 callabe 作为默认值。
from django.contrib.postgres.fields import ArrayField
class User(AbstractUser):
email_list = ArrayField(models.EmailField(max_length=100), null=True, blank=True, default=list)
[...]
https://docs.djangoproject.com/en/1.11/ref/contrib/postgres/fields/
出现初始 None 值是因为 null=True,即使 default=list。 为避免覆盖默认值,删除或将 null 设置为 False
from django.contrib.postgres.fields import ArrayField
class User(AbstractUser):
email_list = ArrayField(models.EmailField(max_length=100), blank=True, default=list)
[...]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.