问题描述
我有以下型号。
BaseClass1
和 BaseClass2
是模型使用的抽象模型。
I have the following models.BaseClass1
and BaseClass2
are abstract models used by models.
在这种情况下,视图集和序列化器使用模型 AdBreak
。
当我运行 python manage.py makemigrations
时,会检测到 AdBreak
模型的更改。未创建模型 AdBreakStatus
。
In this case, the model AdBreak
is used by a viewset and a serializer.When I run python manage.py makemigrations
, the changes on AdBreak
model is detected. The model AdBreakStatus
is not getting created.
由于 AdBreakStatus
已链接到 AdBreak
,希望也可以迁移 AdBreakStatus
。我的理解是错误的吗?
Since, AdBreakStatus
is linked to AdBreak
, I am expecting a migration for AdBreakStatus
also. Is my understanding wrong?
编辑
在此先感谢您的帮助。
Thanks in advance for the help.
class BaseClass1(models.Model):
class Meta:
abstract=True
timestamp = models.DateTimeField(auto_now_add=True)
class BaseClass2(models.Model):
class Meta:
abstract=True
other_field = models.IntegerField()
class AdBreak(BaseClass1):
class Meta:
db_table = "ad_break"
ad_break_id = models.AutoField(primary_key=True)
... # Other fields
class AdBreakStatus(BaseClass2):
class Meta:
db_table = "ad_break_status"
ad_break = models.ForeignKey(AdBreak)
... # Other Fields
推荐答案
我在
解决方案1
有一个序列化器 AdBreakSerializer
序列化模型 AdBreak
。
将 AdBreakStatus
模型导入 AdBreakSerializer
文件。
现在已检测到并迁移了 AdBreakStatus
模型。
I solved it in multiple ways.
Solution 1
There is a serializer AdBreakSerializer
which serializes the model AdBreak
.Import AdBreakStatus
model into the AdBreakSerializer
file.Now AdBreakStatus
model is detected and migrated.
解决方案2
写入 AdBreakStatus
模型类放在 AdBreak
的同一文件中。这也将解决问题。
Solution 2
Write the AdBreakStatus
model class inside the same file of AdBreak
. This will also solve the problem.
makemigrations
脚本查找从 urls.py
连接的模型。该脚本从 urls.py
导航到所有视图集,然后导航到相应的序列化器和模型。
The makemigrations
script looks for models which are connected from urls.py
. The script navigates from urls.py
to all the viewset, then the corresponding serializers and models.
这篇关于Django迁移未检测到所有更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!