Django - sqlite - Удалить атрибут из модели - PullRequest
0 голосов
/ 09 мая 2020

Я новичок в Django и до сих пор удивлялся, насколько это просто. Я использую django 3 с БД sqlite3. Я хочу удалить атрибут одной из моих моделей. В данном конкретном случае это «slug».

models.py

class Recipe(models.Model):
    title = models.CharField(max_length=100)
    creator = models.CharField(max_length=42)
    content = models.TextField(null=True)
    creation_date = models.DateTimeField(default=timezone.now,
                                         verbose_name="Creation date")
    photo = models.ImageField(upload_to="photos/")
    main_ingredient = models.ManyToManyField('Ingredient', related_name='recipes')
    slug = models.SlugField(max_length=100)

    class Meta:
        verbose_name = "recipe"
        ordering = ['creation_date']

    def __str__(self):
        return self.title

Я просто удаляю строку и выполняю

python manage.py makemigration

I получил следующую ошибку:

SystemCheckError: System check identified some issues:

ERRORS:
<class 'recipes.admin.RecipeAdmin'>: (admin.E027) The value of 'prepopulated_fields' refers to 'slug', which is not an attribute of 'recipes.Recipe'.

Полагаю, django не хочет удалять строку из БД. Мне нужно сделать это вручную, после чего я попробовал это

Но он не работает для sqlite, как описано здесь

До сих пор я был поражен Django и это серьезный недостаток. Есть способ попроще? что я делаю не так?

Спасибо за помощь

1 Ответ

1 голос
/ 09 мая 2020

Загляните в свой admin.py файл, вы оставили ссылку на него.

Ошибка указывает на проблему. Вы удалили поле заголовка, но оставили его в prepopulated_fields из RecipeAdmin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...