Насколько большой я могу сделать электронную почту, имя, фамилию и имя пользователя в auth.User? - PullRequest
2 голосов
/ 12 марта 2012

Сегодня я потерял пользователя: (

Пользователь попытался зарегистрироваться на моем сайте, и его адрес электронной почты был больше, чем 75 characters (auth.User по умолчанию в Django), я работаю над миграциейчтобы это исправить, но мне интересно, насколько большой я могу сделать колонку, не беспокоясь о performance|storage|memory проблемах?

Я использую PostgreSQL и Django 1.3.1 на Heroku.

Вот миграция South, которую я собираюсь запустить:

class Migration(SchemaMigration):

    def forwards(self, orm):
        # Changing User.username, User.email, User.first_name and User.last_name
        # to bigger fields
        db.alter_column('auth_user', 'username', models.CharField(max_length=255, unique=True))
        db.alter_column('auth_user', 'email', models.CharField(max_length=255, blank=True))
        db.alter_column('auth_user', 'first_name', models.CharField(max_length=255, blank=True))
        db.alter_column('auth_user', 'last_name', models.CharField(max_length=255, blank=True))

    def backwards(self, orm):
        db.alter_column('auth_user', 'username', models.CharField(max_length=30, unique=True))
        db.alter_column('auth_user', 'email', models.CharField(max_length=75, blank=True))
        db.alter_column('auth_user', 'first_name', models.CharField(max_length=30, blank=True))
        db.alter_column('auth_user', 'last_name', models.CharField(max_length=30, blank=True))

1 Ответ

1 голос
/ 12 марта 2012

Использование только миграций оставит проблемы, связанные с проверкой формы, django.contrib.admin и т. Д.

Здесь очень похожий вопрос, который вы можете увидеть здесь: Может ли имя dhango auth_user.username быть varchar (75)?Как это можно сделать?

Существует также пакет, который вы можете использовать для расширения поля имени пользователя: https://github.com/GoodCloud/django-longer-username (на основе этого вопроса)

Вы можете расширить этот коднаходится в этом пакете и для расширения поля электронной почты (поскольку оно расширяет только поле имени пользователя)

...