1

我正在编写一个 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.

4

1 回答 1

-1
class Submittable(models.Model):
    
    class Meta:
        abstract = True
    
于 2021-11-22T10:46:02.290 回答