Django 用户名仍然太长,尽管定义了自定义字段

Django 用户名仍然太长,尽管定义了自定义字段,django,django-models,django-authentication,Django,Django Models,Django Authentication,当用户名太长时,我出现了错误: 在/账户/登记处发出警告/ 第1行“username”列的数据被截断 我已经在使用自定义用户模型,所以我添加了一个新字段,并将其设置为USERNAME\u字段: class MyUser(AbstractUser): USERNAME_FIELD = 'identifier' identifier = models.EmailField(unique=True,default="") ... 我通过几个步骤进行设置,添

当用户名太长时,我出现了错误:

在/账户/登记处发出警告/ 第1行“username”列的数据被截断 我已经在使用自定义用户模型,所以我添加了一个新字段,并将其设置为
USERNAME\u字段

class MyUser(AbstractUser):
    USERNAME_FIELD = 'identifier'
    identifier = models.EmailField(unique=True,default="")
    ...
我通过几个步骤进行设置,添加不带
unique=True
的字段,执行数据迁移,然后添加约束。然而,令我沮丧的是,当我去测试我的新模型时,我得到了同样的错误。
电子邮件字段
的长度为75(
用户名
为30),尝试添加用户名为50个字符的用户会导致错误

在我的注册视图中,我按如下方式注册用户(此行抛出错误):


我应该采取不同的方法吗?是否可以在不调用
create\u user
的情况下手动创建用户?

我中止了此方法,只是手动编写了一个迁移来直接修改数据库:

class Migration(SchemaMigration):

    def forwards(self, orm):
        db.alter_column(u'app_myuser', 'username', self.gf('django.db.models.fields.CharField')(unique=True,max_length=75))

    def backwards(self, orm):
        db.alter_column(u'app_myuser', 'username', self.gf('django.db.models.fields.CharField')(unique=True,max_length=30))

更简单。

不错,这是解决你问题的明智办法。
class Migration(SchemaMigration):

    def forwards(self, orm):
        db.alter_column(u'app_myuser', 'username', self.gf('django.db.models.fields.CharField')(unique=True,max_length=75))

    def backwards(self, orm):
        db.alter_column(u'app_myuser', 'username', self.gf('django.db.models.fields.CharField')(unique=True,max_length=30))