【问题标题】:__unicode__() method doesn't work well__unicode__() 方法不能正常工作
【发布时间】:2016-08-01 16:26:15
【问题描述】:

在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'

在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: اصفهان>]

我希望输出是这样的:

اصفهان

我该怎么做?

【问题讨论】:

  • 波斯语基本上是过滤查询后返回的对象列表。在您的模板中,您需要遍历对象并打印每个对象的名称。试试这个{% for far in farsi %}{{ far.name }}{% endfor %}
  • 谢谢你。

标签: django unicode model


【解决方案1】:

你有这个显示是因为你使用filter 得到farsi,它给你一个查询集的结果。如果您打印查询集,它看起来像一个带有[] 的列表。你需要的是get:

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

这会给你一个对象,{{ farsi }} 只会引用一个对象的__unicode__

【讨论】:

    猜你喜欢
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多