Django objects.all()方法以字符串格式返回我的列表(使用sqlite)

时间:2013-09-11 21:10:47

标签: python django sqlite django-templates

对不起,如果我的问题听起来很愚蠢,因为我是Django的新手。

我在Django中有这样的观点:

def myview(request):

list = Ref.objects.all()

return render_to_response('annonces.html', {'list': list} ,RequestContext(request)) 

Ref是一个小的sqlite数据库,我存储从网上抓取的东西。

在我的django模板中,我想循环我的列表对象(hurl)的一个字段,其中包含一个链接(图像)列表,以便在我的网页上显示它。我试过这个:

   {% for value in list %}
       {% for link in value.hurl %}
           <li><img src="{{ link }}"></li>
       {% endfor %}
   {% endfor %}

不幸的是,它不起作用。对象列表将所有内容转换为字符串,因此我的模板中的循环为字段hurl中的每个字符创建一行。

你知道如何让我的对象以列表而不是字符串的形式呈现投掷吗?

以下是value.hurl的示例:

u"['http://3.visuels.poliris.com/thumbnails/3/3/6/5/3365ddc7-3f27.jpg', 'http://1.visuels.poliris.com/thumbnails/1/2/b/6/12b6c286-372f.jpg', 'http://b.visuels.poliris.com/thumbnails/b/4/f/3/b4f32a1c-3159.jpg']"

这是模型。不确定URLField是否适用于投掷。

class Ref(models.Model):

ref = models.IntegerField(max_length=10, primary_key='True')
title = models.CharField(max_length=500)
hurl = models.URLField()
url = models.URLField()
prix = models.CharField(max_length=500)

由于 吉勒

1 个答案:

答案 0 :(得分:1)

您应该更改对象模型并将hurl的多个值存储为另一个对象。

该对象的ForeignKey对象应该有Ref

class Ref(models.Model):
    # snip

class Link(models.Model):
    url = models.CharField(...)
    ref = models.ForeignKey("Ref")

然后,在您的模板中,执行:

{% for value in list %}
    {% for link in value.link_set %}
        <li><img src="{{ link }}"></li>
    {% endfor %}
{% endfor %}

为了获得更好的性能,请在您的视图中执行:

list = Ref.objects.prefetch_related("link_set").all()