Разрешить null во внешнем ключе для пользователя. Джанго - PullRequest
22 голосов
/ 28 ноября 2009

У меня есть эта модель

class Vacancy(models.Model):
    user = models.ForeignKey(User, null=True, blank=True, default = None)
    name = models.CharField(max_length=64)

В админке я пытаюсь создать вакансию без пользователя. И он выдает ошибку "club_vacancy.user_id не может быть NULL". Я делаю что-то не так?

Ответы [ 3 ]

33 голосов
/ 28 ноября 2009

club_vacancy.user_id may not be NULL

Очень похоже на ошибку из вашей базы данных, а не из Django.

Скорее всего, вы добавили null=True после запуска manage.py syncdb. Вам нужно будет изменить схему базы данных, чтобы в этом столбце содержались пустые значения.

2 голосов
/ 30 ноября 2009

Помимо юга, другой вариант - использовать django evolution для изменений схемы.

http://code.google.com/p/django-evolution/

Установите его перед внесением изменений в БД. Затем запустите

python manage.py evolve --hint --execute

Убедитесь, что если вы добавите новое поле, вы разрешите пустые значения (null=True), иначе evolve выдаст вам сообщение об ошибке.

0 голосов
/ 29 ноября 2009

вам нужно сбросить таблицу базы данных (поскольку только syncdb не обновляет поля, которые уже созданы с помощью null = False)

. / Manage.py сбросить ваше приложение

ИЛИ, если есть данные, которые вы не хотите потерять, используйте команды SQL для удаления флага NOT NULL

...