Vorrei utilizzare le proprietà della classe Meta di un modello ereditario per configurare un campo definito in un modello astratto più in alto dell'albero di eredità:Impossibile utilizzare una classe Meta del modello Django ereditario per configurare un campo definito in un modello astratto ereditato
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'
Vorrei che il testo di aiuto sul campo del nome di forme OwnedModel a dire 'un nome significativo per questo oggetto di proprietà'. Ma non è: manca la parola 'owned', che suggerirebbe che il verbose_name di NamedModel.Meta venga usato quando il modello è impostato, non OwnedModel.Meta.
Questo non è esattamente ciò che mi aspetto da un punto di vista dell'ereditarietà: c'è un modo per ottenere il campo da creare in base al quale Meta.verbose_name fa riferimento al valore sulla classe del modello non astratto, non a quella astratta su quale il campo è stato definito?
Oppure sono un idiota?
(questo può sembrare un esempio banale, ed è: ma è solo per illustrare il punto di qualcosa di più importante e complesso che sto cercando di fare)
Molte grazie in anticipo.
Sì, io credo che sia così. Dopo aver seguito il flusso, sono più chiaro sul ciclo di vita: i campi vengono valutati quando la classe viene analizzata, quindi l'eredità non viene considerata. E ho provato gli attributi di classe al di fuori della meta ... lo stesso problema, naturalmente. Sono felice di scavalcare le classi di campi e potrei usare quello (+ quello che suggerisci) per ottenere l'effetto desiderato. –