2016-04-11 3 views
0

не работает в models.py:__unicode __() не очень хорошо

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' 

В 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 }} 

Выход это прямо сейчас:

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

Я хочу выход быть таким:

اصفهان 

Как я должен это делать?

+1

farsi - это в основном список объектов, возвращенных после запроса фильтра. В шаблоне вам необходимо прокрутить объекты и напечатать имя каждого объекта. попробуйте это '{% for far in farsi%}' '{{far.name}}' '{% endfor%}' –

+0

Это работает, спасибо ou. – niloofar

ответ

1

У вас был этот дисплей, потому что вы используете filter, чтобы получить farsi, что дает вам результат запроса. Если вы печатаете запрос запроса, он выглядит как список с [] вокруг него. Что вам нужно get:

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

Это даст вам один объект и {{ farsi }} будет относиться только к __unicode__ одного объекта.

+0

Да, он работает спасибо. – niloofar

Смежные вопросы