Могу ли я указать пользовательское значение по умолчанию, которое будет использоваться при миграции после добавления нового родительского класса в модели 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