我正在编写一个 Django 应用程序,它提供了一个非常简单的模型,称为Submittable
,当应用程序的用户想要使用应用程序的其他功能时,应该从该模型继承。
# app1
class Submittable(models.Model):
is_submitted = models.BooleanField(default=False)
# other methods here
# app2
class Paper(Submittable):
# some fields
但是,当我将其作为父级添加到另一个应用程序中的现有模型并运行makemigrations
时,系统会要求我为新字段提供默认值submittable_ptr_id
。问题是,我希望这个字段简单地指向一个新实例,Submittable
但我不知道该怎么做。
我知道,我可以简单地编辑这样创建的迁移文件:
class Migration(migrations.Migration):
dependencies = [
# some dependencies
]
operations = [
migrations.AddField(
model_name='Paper',
name='submittable_ptr_id',
# here I set default to a function from the Submittable app that just creates a new submittable
field=models.OneToOneField(auto_created=True, default=app1.utils.create_submittable, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key
=True, serialize=False, to='app1.Submittable'),
preserve_default=False
),
]
但我想知道我是否可以在某处指定任何app1
使这种情况自动发生的东西?我不希望应用程序的用户必须自己进行此更改,相反,每当有人继承Submittable
并运行makemigrations
默认值时,都应将其设置为创建新Submittable
.