Я новичок в 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 и это серьезный недостаток. Есть способ попроще? что я делаю не так?
Спасибо за помощь