0

我正在尝试将我的对象列表传递views.py给我的 html 模板,但我无法访问我的 HTML 模板中的对象模型属性。请检查以下代码:

类.py:

class FOF(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=200)
    size = models.IntegerField()
    pub_date = models.DateTimeField('date published')
    view_count = models.IntegerField()
    def __unicode__(self):
        return self.name

class Frame(models.Model):
    url = models.CharField(max_length=200)
    fof = models.ForeignKey('FOF', related_name='frame_set')
    index = models.IntegerField()
    def __unicode__(self):
        return self.url

视图.py:

def my_fof(request, fof_name_value):
    my_list = FOF.objects.all().order_by('-rank')
    ...
    return render_to_response('uploader/my_fof.html', {'my_list':my_list}, context_instance=RequestContext(request))

我通常可以在传递单个对象时访问 html 文件中的属性,但是一旦传递对象列表,似乎就无法访问这些属性。

例如,当我键入时,alert({{ fof_list.0 }});它会打印对象属性名称,因为它是在models.py中定义的:

def __unicode__(self):
    return self.name

但是,一旦我尝试访问它的任何属性,如pub_date: alert({{ fof_list.0.pub_date }});它就会返回undefined,因为该属性不可用或无法访问。

关于在传递整个列表时如何继续达到这些属性的任何想法?或者如何正确通过该列表?

干杯。

4

2 回答 2

2

使用for模板标签迭代一个可迭代对象并依次获取每个元素。

于 2012-12-30T19:20:01.870 回答
1

您首先需要将属性的内容放在 javascript 变量中。

<script>
    var pub_date = '{{my_list.0.pub_date}}';
    alert(pub_date);

    //this will also work
    alert('{{my_list.0.pub_date}}') # enclosed in single or double quotes
</script>

使用 afor loop并对其进行迭代以获取模板中的每个对象。

{% for obj in my_list %}
   <span>{{obj.pub_date}}</span>
   <span>{{obj.size}}</span>
   ---
{% endfor %}
于 2012-12-30T19:22:06.640 回答