Django不识别模型中的特定更改 类别(models.Model): name=models.CharField(最大长度=128,唯一性=True) 视图=模型.IntegerField(默认值=0) likes=models.IntegerField(默认值=0) #我们重写save以便将名称转换为slug ###基本上->name.lower().replace(“,”-”) def保存(自身、*args、**kwargs): self.slug=slugify(self.name) 超级(类别,自我)。保存(*args,**kwargs) 定义(自我): 返回self.name 类元: 详细名称复数=“类别”

Django不识别模型中的特定更改 类别(models.Model): name=models.CharField(最大长度=128,唯一性=True) 视图=模型.IntegerField(默认值=0) likes=models.IntegerField(默认值=0) #我们重写save以便将名称转换为slug ###基本上->name.lower().replace(“,”-”) def保存(自身、*args、**kwargs): self.slug=slugify(self.name) 超级(类别,自我)。保存(*args,**kwargs) 定义(自我): 返回self.name 类元: 详细名称复数=“类别”,django,django-models,django-migrations,Django,Django Models,Django Migrations,保存覆盖未注册。尝试运行makemigrations时,我收到一条“在应用程序中未检测到任何更改”的消息 我尝试过在其他方法中进行更改,这些更改得到了认可 是什么导致了这种情况?迁移仅用于数据库更改;您在save方法中的重写与数据库无关(如添加新字段等),因此它不会生成任何迁移。迁移会更改数据库。重写方法、添加属性、定义新方法等都位于Python/Django级别,与数据库无关,因此不需要迁移。您将如何使用给定的新.save(..)方法更改数据库 如果需要填充现有记录,可以构造一个。您可以通过以

保存覆盖未注册。尝试运行
makemigrations
时,我收到一条“在应用程序中未检测到任何更改”的消息

我尝试过在其他方法中进行更改,这些更改得到了认可


是什么导致了这种情况?

迁移仅用于数据库更改;您在save方法中的重写与数据库无关(如添加新字段等),因此它不会生成任何迁移。

迁移会更改数据库。重写方法、添加属性、定义新方法等都位于Python/Django级别,与数据库无关,因此不需要迁移。您将如何使用给定的新
.save(..)
方法更改数据库

如果需要填充现有记录,可以构造一个。您可以通过以下方式构建这样的迁移:

python manage.py makemigrations --empty appname

save
覆盖不会对数据库表产生任何更改。因此无需进行任何更改。缺少的字段使我了解了迁移实际上在做什么。直到现在,我还以为它是
models.py
文件的一种版本控制。谢谢你的帮助!
from autoslug import AutoSlugField

class Category(models.Model):
    name = models.CharField(max_length=128 , unique=True)
    slug = AutoSlugField(populate_from='name')
    views = models.IntegerField(default=0)
    likes = models.IntegerField(default=0)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = "Categories"