makemigrations不会创建低谷模型

时间:2019-06-17 10:14:17

标签: django django-models django-migrations

我已经在项目中对其中一个模型进行了更改并进行了迁移,makemigrations无法按预期工作。重建数据库仅从我的models.py创建3分之2的表,我不能找出问题。

有两个不同的应用程序; “博客”和“用户”。两者都已在setting.py中注册。

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

django makemigrations blog 
django migrate blog

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

这是“博客”的相关模型。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)

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

Migrations for 'blog':
  blog\migrations\0001_initial.py
    - Create model Room
    - Create model Post

1 个答案:

答案 0 :(得分:1)

您正在模型的Meta类中提供auto_created = True,建议不要将其记录下来。 Here是您可以在模型中提供的所有可能的元选项的列表。

官方documentation说:

  

auto_created:布尔型标志,指示是否自动创建该字段,例如模型继承所使用的OneToOneField。

在Meta中提供此功能会限制Django自己创建此模型。