У меня есть следующие настройки (Django 2.0.6, также в 2.2), первая миграция с полем, имеющим max_length=64
, и теперь я хочу изменить DummyCharField.max_length
на 255:
class BaseDummyCharField(models.CharField):
def __init__(self, *args, **kwargs):
if 'max_length' not in kwargs:
kwargs['max_length'] = 64
super().__init__(*args, **kwargs)
class DummyCharField(BaseDummyCharField):
def __init__(self, *args, **kwargs):
kwargs['max_length'] = 255
super().__init__(*args, **kwargs)
class AnotherDummyCharField(BaseDummyCharField):
...
class DummyModel(models.Model):
dummy = DummyCharField()
При запуске makemigrations
он просто говорит "Изменения не обнаружены".
Я также пытался использовать deconstruct()
, как сказано в документах , но он все равно не работал.
class DummyCharField(BaseDummyCharField):
def __init__(self, *args, **kwargs):
kwargs['max_length'] = 255
super().__init__(*args, **kwargs)
def deconstruct(self):
name, path, args, kwargs = super().deconstruct()
del kwargs['max_length']
return name, path, args, kwargs
В качестве обходного пути я сделал следующее:
class DummyCharField(BaseDummyCharField):
def __init__(self, *args, **kwargs):
# If wrapped inside an `if`, it works...
if 'max_length' not in kwargs:
kwargs['max_length'] = 255
...
Я что-то здесь упускаю или в чем конкретно моя вина в этом случае?