我有一个
django.contrib.auth用户模型的问题,邮件max_length是75.
我正在接收来自facebook api的超过75个字符的电子邮件地址,我需要(真的想)将它们存储在用户中,用于来自Facebook连接和其他用户的连续性.
我可以通过手动编辑我们的MysqL数据库中的字段来解决“第1列”中的“数据截断列”电子邮件问题,但是有没有更好的解决方法?最好是每当我重新设置模式更改时,我都不需要我手动编辑数据库?
解决方法
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,**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)
两种方式最好将此代码放在initST中的任何模块之前,在您的INSTALLED_APPS中的django.contrib.auth之前