Каков рекомендуемый способ создания пустой строки в БД для модели django? - PullRequest
0 голосов
/ 26 января 2011

Я пытаюсь создать веб-приложение, которое по сути является довольно привлекательным интерфейсом для базы данных. Хотя база данных является более сложной, чем одна таблица (много разных отношений к множеству разных таблиц и тому подобное), я хотел бы создать пустые строки при добавлении в одну из основных таблиц.

Мне любопытно, есть ли лучший способ выполнить мою задачу в Django, чем то, что я пытаюсь использовать.

Я не хочу, чтобы пользователю нужно было сохранять свою форму, чтобы изменения были сохранены в базе данных. Для этого я надеялся создать пустую запись, как только пользователь посетил страницу с формой на ней. По сути, все, что будет существовать, как только пользователь выберет «новую» кнопку, будет запись с первичным ключом и кучей пустых полей.

Я установил в моей модели пустое значение = True и null = True во всех полях, кроме полей даты (которые устанавливаются с помощью auto_now_add). Поскольку пользователь добавляет данные в поля формы, я намерен программно создать сценарий для отправки данных (т. Е. После того, как они покинут поле). Если пользователь прекратит редактирование на полпути или закроет вкладку пользовательского интерфейса jquery, любые введенные данные будут сохранены для дальнейшего использования.

Несмотря на то, что я установил все поля (опять же, кроме auto_now_add для полей даты и времени), я получаю IntegrityError (не может быть нулевым) для поля, которое очень четко помечено как очень пустое и пустое в модели. Есть ли лучший способ, которым я должен идти об этом? Если нет, то почему я вижу эту ошибку, если у меня установлено значение null = True и пусто = True? Я получаю сообщение об ошибке из-за следующей строки в представлении, снова для поля, которое имеет нулевое значение = True и пустое = True в модели.

theModel = theModel.objects.create()

Большое спасибо.

1 Ответ

2 голосов
/ 26 января 2011

Неважно, что говорит ваша модель, только то, что говорит база данных.Поскольку syncdb не изменяет схему, вам придется применить изменения самостоятельно, использовать инструмент миграции, например South, или полностью удалить таблицу и выполнить повторную синхронизацию.

...