Django: как обновлять модели

Я хочу обновить модель в django это модель в models.py:

class Article(models.Model):
    CATEGOTY = (
        ('programming', 'programming'),
        ('other', 'other')
    )

    title    = models.CharField(max_length=100, null=False)
    content  = models.TextField(null=False)
    category = models.CharField(max_length=100, choices=CATEGOTY, null=False)
    creation = models.DateTimeField(auto_now_add=True)
    author   = models.ForeignKey(Author, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

например, я хочу добавить slug в эту модель следующим образом:

    slug = models.SlugField(max_length=100, null=False)

но когда я отображаю py manage.py makemigrations, мне показывается следующее:

Please select a fix:
 1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
 2) Quit, and let me add a default in models.py

what should I enter if I select option 1? if i type datetime.date.today() It gives me an error that says: TypeError: function missing required argument 'year' (pos 1)

Вы можете удалить предыдущие миграции, а затем попытаться мигрировать снова, я думаю, что это сделает работу. но проблема в том, что это удалит все записи.

Когда вы добавляете обязательное поле, когда таблица не пуста, вам необходимо предоставить системе информацию для заполнения нового поля. Для этого у вас есть 2 варианта:

  • определите правило для значения по умолчанию
  • выберите вариант 2 и для каждой строки вам будет предложено ввести значение

Для варианта 1, возможно, следует использовать функцию slugify() (из модуля django.utils.text)

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

Вернуться на верх