makemigrations 不创建槽模型

makemigrations does not create the trough model

我对项目中的一个模型进行了更改并进行了迁移,makemigrations 没有按预期工作。重建数据库只从我的 models.py 中创建了 3 个 table 中的 2 个,我无法找出问题所在。

有两个不同的应用; "blog" 和 "users"。两者都在 setting.py.

中注册

我完全删除了数据库并删除了迁移文件夹。 然后我尝试了以下内容:

django makemigrations blog 
django migrate blog

执行全局 django makemigrations 没有任何效果,未检测到任何更改。

这里是 "blog" 的相关 models.py:

class Room(models.Model):
   roomname = models.CharField(max_length=6, unique=True)
   roomeditors=models.ManyToManyField(User,related_name='rooms_user_can_edit', blank=True)
   displayadmin=models.ForeignKey(User, 
   related_name='room_user_is_displayadmin',null=True, on_delete=models.SET_NULL)

    def __str__(self):
        return self.roomname



class Post(models.Model):
    title = models.CharField(max_length=40)
    content = models.TextField(max_length=300)
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    rooms = models.ManyToManyField(Room, related_name='roomposts', through='Display')

    def __str__(self):
        return self.title

    def get_absolute_url(self):
      return "/post/{}/".format(self.pk)

class Display(models.Model):
    class Meta:
        auto_created = True
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    room = models.ForeignKey(Room, on_delete=models.CASCADE)
    isdisplayed = models.BooleanField(default=0)

    def __str__(self):
        return str(self.isdisplayed)

每个 table 都会创建,但显示除外。输出是:

Migrations for 'blog':
  blog\migrations[=12=]01_initial.py
    - Create model Room
    - Create model Post

您在模型的 Meta class 中给出 auto_created = True,不推荐这样做,也没有记录在案。 Here 是您可以在模型中提供的所有可能元选项的列表。

官方 documentation 说:

auto_created: Boolean flag that indicates if the field was automatically created, such as the OneToOneField used by model inheritance.

在 Meta 中提供这个会阻止 Django 自己创建这个模型。