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 自己创建这个模型。
我对项目中的一个模型进行了更改并进行了迁移,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 自己创建这个模型。