Django makemigration生成AlterField而不对Model进行任何更改

cxfofazt  于 11个月前  发布在  Go
关注(0)|答案(1)|浏览(72)

当在Django中使用makemigrations时,我注意到它甚至会为没有更改的字段生成迁移。这是什么原因?
这是我每次运行makemigrations时Django都会生成一个新迁移的Model

class Announcement(OJModel):
    owner = models.ForeignKey(
        "user.User",
        verbose_name=_("Announcement Owner"),
        on_delete=models.CASCADE,
        related_name="owner_announcements",
        null=True,
        blank=True,
    )
    title = models.CharField(max_length=300, default="", verbose_name=_("Title"))
    description = models.TextField(
        max_length=3000, default="", verbose_name=_("Description")
    )
    estate = models.OneToOneField(
        "announcement.Estate",
        on_delete=models.CASCADE,
        verbose_name=_("Estate"),
        null=True,
    )

字符串
makemigrations生成的脚本:

class Migration(migrations.Migration):
    dependencies = [
        ("announcement", "0072_auto_20181218_1256"),
    ]

    operations = [
        migrations.AlterField(
            model_name="announcement",
            name="estate",
            field=models.OneToOneField(
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                to="announcement.Estate",
                verbose_name="Estate",
            ),
        ),
    ]

q3qa4bjr

q3qa4bjr1#

在models.py上这样写:

from django.db import models

class Announcement(models.Model):
    owner = models.ForeignKey('user.User', verbose_name=_('Announcement Owner'), on_delete=models.CASCADE,related_name='owner_announcements', null=True, blank=True)
    title = models.CharField(max_length=300, default='', verbose_name=_('Title'))
    description = models.TextField(max_length=3000, default='',verbose_name=_('Description'))
    estate = models.OneToOneField('announcement.Estate', on_delete=models.CASCADE,verbose_name=_('Estate'), null=True)

    def __str__(self):
        return self.title

字符串
在admin.py中这样写:

from django.contrib import admin
from .models import Announcement

# Register your models here.

admin.site.register(Announcement)


保存文件,现在从迁移文件夹中删除旧迁移!
现在在manage.py目录下的命令行中运行这些命令:

python manage.py makemigrations


然后这个:

python manage.py migrate


都搞定了

相关问题