Campo modello Django predefinito basato su un altro campo nello stesso modello

| | | | |

Ho un modello che vorrei contenesse il nome di un soggetto e le sue iniziali (i dati sono in qualche modo anonimi e tracciati dalle iniziali).

In questo momento, ho scritto

 class Subject(models.Model): name = models.CharField("Name", max_length=30) def subject_initials(self): return ".join(map(lambda x: "" if len(x) ==0 else x[0], self.name.split(" "))) # La riga successiva è ciò che voglio fare (o qualcosa di equivalente), ma non funziona con # NameError: name "self" non è definito subject_init = models.CharField("Subject Initials", max_length=5, default=self.subject_initials) 

Come indicato dall'ultima riga, preferirei poter avere il le iniziali vengono effettivamente archiviate nel database come un campo (indipendente dal nome), ma viene inizializzato con un valore predefinito basato sul campo del nome.Tuttavia, sto riscontrando problemi poiché i modelli django non sembrano avere un "sé".

Se cambio la riga in subject_init = models.CharField("Subject initi als", max_length=2, default=subject_initials), posso eseguire syncdb, ma "non posso creare nuovi soggetti.

È possibile in Django, avere una funzione richiamabile che dia un valore predefinito in qualche campo in base al valore di un altro campo?

(Per i curiosi, il motivo per cui voglio separare le iniziali del mio negozio separatamente è in rari casi in cui strani cognomi possono avere diversi da quelli che sto monitorando . Ad esempio, qualcun altro ha deciso che le iniziali del Soggetto 1 denominato "John O"Mallory" sono "JM" anziché "JO" e vuole correggere la modifica come amministratore.)