Django中EmailField字段的长度硬编码为75个字符。您可以像这样修复它:
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)
在双向情况下,最好将此代码放入任何模块的init()函数中,位于INSTALLED_APPS中的django.contrib.auth之前。
自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'