我已经在项目中对其中一个模型进行了更改并进行了迁移,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
答案 0 :(得分:1)
您正在模型的Meta类中提供auto_created = True
,建议不要将其记录下来。 Here是您可以在模型中提供的所有可能的元选项的列表。
官方documentation说:
auto_created:布尔型标志,指示是否自动创建该字段,例如模型继承所使用的OneToOneField。
在Meta中提供此功能会限制Django自己创建此模型。