2015-08-16 9 views
6

Sono nuovo di zecca con django e sql. Un tutorial che sto esaminando mette def __unicode__(self) su ogni classe di modelli? ecco il riferimento allo documentation Ma anche dopo aver letto non riesco ancora a capire quale sia lo scopo?Perché utilizzare il metodo __unicode __ (self) per django 1.7+?

class Project(models.Model): 
    name = models.CharField(max_length=300) 

    def __unicode__(self): 
     return self.name 

class Task(models.Model): 
    description = models.CharField(max_length=300) 
    project = models.ForeignKey(Project) 

    def __unicode__(self): 
     return self.description 
+0

Cosa non capisci riguardo la descrizione nella documentazione? Mi sembra abbastanza chiaro. – BrenBarn

+1

Quindi, ogniqualvolta si usa 'unicode (instance)' o '{{instance}}' in un template, viene chiamato quel metodo, perché usare solo '__str__' non funzionerebbe per produrre Unicode. In quali parti di * specificamente * hai problemi? –

+0

@MartijnPieters Non sapevo esattamente come i modelli memorizzino i dati. Immagino che def converte i dati del modello memorizzati in unicode per i modelli front-end? –

risposta

5

L'idea è quando si stampa {{progetto}} si ottiene essenzialmente solo ottenere un mucchio di spazzatura che non è veramente ben informato.

def __Unicode__(self): 

Definisce ciò che si stampa in modo che {{Progetto}} visualizzi la descrizione dell'oggetto. Che è molto più utile, PER TE.

+0

awesome def __unicode __ (self): convertirà i modelli in unicode per i template corretti? –

+0

sì, ma sii consapevole che non puoi confrontarli ... per esempio {{project.description}}! = {{Project}} anche se {{project}} mostrerà la stessa stringa esatta di {{project.description} } –

+0

@xElsa: sicuro che puoi; se '__unicode__' restituisce' self.description', allora hai * lo stesso oggetto Unicode *. –

Problemi correlati