2013-02-22 16 views
12

Sono nuovo di Django e ho un modello di applicazione e un modello di ambiente. L'ambiente ha l'applicazione come chiave straniera. So che ho bisogno di scrivere un metodo unicode() per una rappresentazione leggibile dall'uomo del modello, ma c'è un modo per ottenere un attributo dall'oggetto foreignkey da visualizzare come parte della stringa?django - modello unicode() mostra l'attributo dell'oggetto foreignkey

class Application(models.Model): 
    app_id = models.IntegerField(primary_key=True) 
    app_name = models.CharField(max_length=200) 
    app_description = models.CharField(max_length=2000, blank=True) 

    def __unicode__(self): 
     return self.app_name 

class Environment(models.Model): 
    app_id = models.ForeignKey(Application, db_column='app_id') 
    environ_id = models.IntegerField(max_length=6) 
    environ_name = models.CharField(max_length=200) 

    def __unicode__(self): 
     return '%s %s' % (application__app_name, self.environ_name) 

Desidero che il modello Ambiente sia rappresentato come "nome_applicazione nome_ambiente".

Aggiornamento: Il motivo per cui desidero visualizzare il modello di ambiente come "nome_app di applicazione nome_ambiente" in modo che sia più chiaro per l'utente quando immette i dati nelle pagine di amministrazione. Ad esempio, app_name sarebbe "NavSystem" e environ_name sarebbe "DEV1", quindi avere il modello Environment rappresentato come "NavSystem DEV1" è più utile di "DEV1".

risposta

13

È possibile infatti, facendo riferimento all'attributo utilizzando la sintassi 'punto'. Ecco cosa desideri:

def __unicode__(self): 
    return '%s %s' % (self.app_id.app_name, self.environ_name)  
+0

Impressionante, questo è esattamente ciò di cui avevo bisogno. Grazie! – MD6380

+1

se uso "dot syntax" per accedere a un oggetto Key esterno, ottengo: l'oggetto 'NoneType' non ha attributo 'nome'. Io uso me stesso. . . L'attributo "nome" esiste. – Timo

Problemi correlati