2016-04-11 4 views
0

動作しない:views.pyで__unicode __()メソッドは、models.pyでよく

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' 

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

関連する問題