Могу ли я указать пользовательское значение по умолчанию, которое будет использоваться при миграции после добавления нового родительского класса в модели Django?

Я пишу приложение 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.

class Submittable(models.Model):
    
    class Meta:
        abstract = True
    
Вернуться на верх