2014-10-02 3 views
0

Я пытаюсь установить значения по умолчанию для нескольких полей, таких как Date, Integer и CharFields, но когда я устанавливаю его как default=12 (в случае целого), он не отображается на странице. Однако всегда отображается значение нуля по умолчанию.Невозможно установить значения по умолчанию в моделях Django

Months = models.IntegerField('Enter the month',default=12 

Над полем является обязательным полем, следовательно, по умолчанию 0 отображается в форме, но ничего, кроме нуля, не отображается.

То же самое происходит с charField и DateField, в этом случае ничего не отображается в форме.

Я использую mySQL на бэкэнд.

Я хочу установить дату по умолчанию на '0000-00-00', как я могу это сделать?

+0

'default = 12' будет применен только к новым созданным моделям. Существующие значения в базе данных будут сохранять старое значение, пока вы не измените его явно. – stalk

+0

новая модель означает новые таблицы? или новые записи данных? – User42

+0

Я имею в виду новые экземпляры модели с точки зрения django. Он соответствует новым строкам таблицы. 'YourModel (** data) .save()' <- экземпляр новой модели был сохранен, т. Е. Новая строка была вставлена ​​(или обновлена) в базу данных SQL – stalk

ответ

0

Установленное значение по умолчанию в модели

добавляется значение по умолчанию, как вы предлагаете

Months = models.IntegerField('Enter the month',default=12... 

Но это значение будет использоваться только, когда объект создан, и вы Dont получать любое значение в этом поле

Пример:

class Year (models.Model): 
    name = models.CharField(max_length=75) 
    months = models.IntegerField(default=12) 

Теперь в консоли/просмотра вы можете сделать:

new_year = Year(name='any_name') 
new_year.save() # And the Year object is created with months = 12 
0

Вы должны проверить, если значение по умолчанию на самом деле есть. Если вы добавили значение по умолчанию после создания модели и использовали syncdb, убедитесь, что вы выполняете makemigrate (на Django 1.7) или внешнее приложение, подобное South, чтобы изменить таблицу базы данных. Если вы этого не сделаете или если вы используете только syncdb, это изменение не будет отражено в вашем MySQL.

Смежные вопросы