Наследование и миграции Django AbstractModel

Хочу прояснить свое понимание наследования абстрактной модели Django и миграций, поскольку мне было трудно найти четкую документацию по этому вопросу.

Допустим, у меня есть пакет pckg.app.models, определяющий AbstractModel:

class AbstractObj(models.Model):
    name = CharField(max_length=100)

    class Meta:
        verbose_name = _("Obj")
        abstract = True

    def __str__(self):
        return str(self.label)

Возможно ли изменить поле name через наследование? Или можно импортировать этот пакет, чтобы поле 'name' можно было перенести и изменить?

В файле models.py моего приложения, если я импортирую и подклассифицирую его:

from pckg.app.models import Obj

Class NewObj(Obj):
    name = CharField(max_length=200)

    def __str__(self):
        return self.label

это создаст миграцию, такую как:

from __future__ import unicode_literals

from django.db import migrations, models
from forms_builder.forms import fields
import django.db.models.deletion


class Migration(migrations.Migration):

    dependencies = [
        ('foo', 'bar'),
    ]

    operations = [
        migrations.CreateModel(
            name='NewObj',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, editable=False, verbose_name='created')),
                ('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, editable=False, verbose_name='modified')),
                ('name', models.CharField(max_length=200)),
            ],
        ),
    ]

но это не сработает, потому что NewObj является экземпляром Obj, а не Obj:

django.core.exceptions.FieldError: Local field 'name' in class 'NewObj' clashes with field of the same name from base class 'Obj'

существует ли способ мигрировать или изменить AbstractObj без определения его в моем приложении Django и создания для него специального файла(ов) миграции?

Вернуться на верх