2016-04-11 10 views
0

In models.py:__unicode __() Verfahren funktioniert nicht gut

class POstan(models.Model): 
    name = models.TextField() 
    shortname = models.TextField() 
    map = models.TextField() 
    man = models.CharField(max_length=128) 
    woman = models.CharField(max_length=128) 
    about = models.TextField(blank=True, null=True) 
    map_img = models.TextField() 

def __str__(self): 
    return self.name 

class Meta: 
    managed = False 
    db_table = 'p_ostan' 

In views.py:

def select(request): 
    list = PMenu.objects.all() 
    os = request.META['PATH_INFO'] 
    os = os[8:] 
    items = PShahr.objects.filter(ostan=os) 
    farsi = POstan.objects.filter(shortname=os) 
return render(request, 'select.html', {'list':list, 'os':os, 'farsi': farsi, 'items': items}) 

select.html:

{{ farsi }} 

Der Ausgang ist das gerade jetzt:

[<POstan: اصفهان>] 

Ich möchte die Ausgabe wie folgt sein:

اصفهان 

Wie soll ich das tun?

+1

Farsi ist im Grunde eine Liste der Objekte, die nach der Filterabfrage zurückgegeben wurden. In Ihrer Vorlage müssen Sie die Objekte durchlaufen und den Namen jedes Objekts ausgeben. versuchen Sie dies '{% für weit in farsi%}' '{{far.name}}' '{% endfor%}' –

+0

Es funktioniert danke ou. – niloofar

Antwort

1

Sie hatten diese Anzeige, weil Sie filter verwenden, um farsi zu erhalten, die Ihnen das Ergebnis eines Abfrage-Sets gibt. Wenn Sie Abfrage-Set drucken, sieht es wie eine Liste mit [] um es aus. Was Sie brauchen, ist get:

farsi = POstan.objects.filter(shortname = os) 

Dies würde Ihnen ein einzelnes Objekt und {{ farsi }} würde nur zu __unicode__ eines einzelnen Objekts beziehen.

+0

Ja, es funktioniert, danke. – niloofar

Verwandte Themen