Я хотел бы использовать свойства класса Meta наследующей модели для настройки поля, определенного в абстрактной модели, выше дерева наследования:Невозможно использовать класс Meta-класса, наследующий Django, для настройки поля, определенного в унаследованной абстрактной модели.
class NamedModel(models.Model):
class Meta:
abstract = True
verbose_name = 'object'
name = models.CharField("Name",
max_length=200,
db_index=True,
help_text="A meaningful name for this %s." % Meta.verbose_name)
# see what I'm trying to do here?
)
...
class OwnedModel(NamedModel):
class Meta(NamedModel.Meta):
verbose_name = 'owned object'
Я хотел бы текст справки на поле имени OwnedModel форм сказать «значимое имя этого объекта, принадлежащего». Но это не: слово «принадлежит» отсутствует, что предполагает, что имя verbose_name из NamedModel.Meta используется, когда модель настроена, а не OwnedModel.Meta.
Это не совсем то, что я ожидаю от точки наследования: существует ли какой-то способ создания поля, в котором Meta.verbose_name ссылается на значение на не-абстрактном классе модели, а не на абстрактное на котором было определено поле?
Или я глуп?
(Это может показаться тривиальным примером, и это: но это просто для иллюстрации точки что-то более важным и сложным, я стараюсь делать)
Большое спасибо заранее.
Да, я думаю, что это. После выполнения потока я понятнее на жизненном цикле: поля оцениваются при анализе класса, поэтому наследование не рассматривается. И я пробовал атрибуты класса за пределами мета ... той же проблемы, конечно. Я рад переопределить классы полей, и я могу использовать это (+ то, что вы предлагаете), чтобы получить желаемый эффект. –