访问Django中每个列表组件的模型属性

时间:2012-12-30 19:15:34

标签: python django

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

class.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

views.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_datealert({{ fof_list.0.pub_date }});会返回undefined,因为该属性不可用或无法访问。

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

干杯。

2 个答案:

答案 0 :(得分:2)

使用for template tag迭代迭代并依次获取每个元素。

答案 1 :(得分: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>

使用for loop并迭代它以获取模板中的每个对象。

{% for obj in my_list %}
   <span>{{obj.pub_date}}</span>
   <span>{{obj.size}}</span>
   ---
{% endfor %}