Django: дочерние модели с одинаковыми свойствами, но с разными атрибутами этих свойств - PullRequest
0 голосов
/ 31 января 2020

В моей базе данных есть две модели, которые, если я не сделаю ничего «творческого», будут выглядеть примерно так:

class AbstractModel(models.Model):

    uuid = models.UUIDField(default=uuid.uuid4)

    class Meta:
        abstract = True


class ModelA(AbstractModel):
    name = models.CharField(max_length=128)


class ModelB(AbstractModel):
    name = models.CharField(max_length=128, blank=True, null=True)

Единственная реальная разница между ModelA и ModelB что я хочу, чтобы свойство ModelA name было не обнуляемым, но записывая его так, особенно если учесть, что у меня есть около 10 различных полей для записи в почти одинаковой ситуации, я чувствую себя очень не DRY. Конечно, есть лучший / умный способ?

Обратите внимание, что речь не идет о проверке, поэтому перемещение проверки бланка в форму не решит проблему. Я хочу, чтобы столбец базы данных был NOT NULL для ModelA и NULL для ModelB.

1 Ответ

1 голос
/ 03 февраля 2020

ModelA и ModelB, вероятно, представляют сущности, которые не имеют столько общего, сколько появляется при перечислении их свойств. Тот факт, что одному нужны ценности только для жизни, а другой не предполагает их поведения и обязанностей, требует независимого представительства. Они делают разные вещи для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...