2014-11-25 4 views
3

Я написал модель Python, как указано ниже:Предоставлять значение по умолчанию для необязательного поля в Django модели

из django.db импортных моделей

class Product(models.Model): 


     title = models.CharField(max_length=255, unique=True) 
     description = models.TextField(blank=True) 
     image_url = models.URLField(blank=True) 
     quantity = models.PositiveIntegerField(default=0) 

     def sell(self): 

       self.quantity = self.quantity - 1 
       self.save() 
       return self.quantity 

Когда я пытаюсь создать схему с помощью миграции, Я получаю следующее сообщение:

You are trying to add a non-nullable field 'description' to product without a default; we can't do that (the database needs something to populate existing rows). 
Please select a fix: 
1) Provide a one-off default now (will be set on all existing rows) 
2) Quit, and let me add a default in models.py 
Select an option: 

Мой вопрос, если я устанавливаю «пустой = True» для «описание», это необходимо указать значение по умолчанию для поля? Или я пропустил что-то еще?

ответ

2

Для Django 1.7 создан билет для этого поведения. гляньте here

+0

ohh ... но мне нужно использовать эту схему где-то в другом месте. :( – user3033194

+0

Теперь вы можете просто ввести значение по умолчанию '' вручную, когда эта ошибка будет исправлена, она просто сделает это автоматически, больше ничего. – RemcoGerlich

3

blank=True не то же самое, как null=True как the documentation explains. Когда текстовое поле пуст, для него все еще требуется какое-то значение: но это значение может быть пустой строкой.

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

+0

ОК, я вижу. «Blank = True» относится только к полю, а «null = True» относится как к полю, так и к записи в базе данных. Да, схема была создана, спасибо, что очистил мои сомнения! – user3033194

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