EmailField 75个字??符的长度在django中被硬编码。您可以这样解决:
from django.db.models.fields import EmailField
def email_field_init(self, *args, **kwargs):
kwargs['max_length'] = kwargs.get('max_length', 200)
CharField.__init__(self, *args, **kwargs)
EmailField.__init__ = email_field_init
但这会更改所有EmailField字段的长度,因此您也可以尝试:
from django.contrib.auth.models import User
from django.utils.translation import ugettext as _
from django.db import models
User.email = models.EmailField(_('e-mail address'), blank=True, max_length=200)
两种方式最好将这段代码放在INSTALLED_APPS中的django.contrib.auth之前的任何模块的init中。
从Django 1.5开始,您可以使用基于AbstractUser模型的自定义模型,因此可以使用自己的字段和长度。在您的模型中:
from django.contrib.auth.models import AbstractUser
from django.db import models
class User(AbstractUser):
email = models.EmailField(_('e-mail address'), blank=True, max_length=200)
在设置中:
AUTH_USER_MODEL = 'your_app.models.User'