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'