当用户名太长时我收到错误:
/ account / register /
处的警告第1行
列“用户名”的数据被截断
我已经使用了自定义用户模型,因此我添加了一个新字段并将其设为USERNAME_FIELD
:
class MyUser(AbstractUser):
USERNAME_FIELD = 'identifier'
identifier = models.EmailField(unique=True,default="")
...
我通过几个步骤进行设置,添加不带unique=True
的字段,进行数据迁移,然后添加约束。但是,当我去测试我的新模型时,我感到沮丧,我得到了同样的错误。 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
?
答案 0 :(得分: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))
更简单。