0

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

/account/register/处的警告

第 1 行的“用户名”列的数据被截断

我已经在使用自定义用户模型,所以我添加了一个新字段并将其设为USERNAME_FIELD

class MyUser(AbstractUser):
    USERNAME_FIELD = 'identifier'
    identifier = models.EmailField(unique=True,default="")
    ...

我通过几个步骤进行设置,添加不带 的字段unique=True,进行数据迁移,然后添加约束。然而,令我沮丧的是,当我去测试我的新模型时,我得到了同样的错误。an 的长度EmailField为 75(username为 30),尝试添加用户名为 50 个字符的用户会导致错误。

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

new_user = MyUser.objects.create_user(form.cleaned_data['username'], 
                                      form.cleaned_data['email'], 
                                      form.cleaned_data['password1'])

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

4

1 回答 1

1

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

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))

简单得多。

于 2013-07-01T09:41:21.910 回答