Je souhaite utiliser les propriétés de la classe Meta d'un modèle hérité pour configurer un champ défini dans un modèle abstrait situé plus haut dans l'arbre d'héritage:Impossible d'utiliser une classe Meta héritée du modèle Django pour configurer un champ défini dans un modèle abstrait hérité
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'
Je voudrais que le texte d'aide sur le champ nom des formes OwnedModel dire «Un nom significatif pour cet objet appartenant. Mais ce n'est pas: le mot 'owned' est manquant, ce qui suggère que le verbose_name du NamedModel.Meta est utilisé lorsque le modèle est configuré, et non OwnedModel.Meta. Ce n'est pas tout à fait ce que j'attends du point de vue de l'héritage: existe-t-il un moyen de créer le champ où Meta.verbose_name fait référence à la valeur de la classe de modèle non-abstraite, pas à celle abstraite sur lequel le champ a été défini?
Ou suis-je daft?
(Cela peut sembler un exemple trivial, et il est: mais il est juste pour illustrer le point de quelque chose de plus important et complexe que je suis en train de faire)
Un grand merci à l'avance.
Oui, je pense que c'est ce. Après avoir suivi le flux, je suis plus clair sur le cycle de vie: les champs sont évalués lorsque la classe est analysée, donc l'héritage n'est pas pris en compte. Et j'ai essayé des attributs de classe en dehors de méta ... même problème bien sûr. Je suis heureux de remplacer les classes de champs et je peux utiliser cela (+ ce que vous suggérez) pour obtenir l'effet désiré. –