我正在尝试将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_date
:alert({{ fof_list.0.pub_date }});
会返回undefined
,因为该属性不可用或无法访问。
关于如何在传递整个列表时继续达到这些属性的任何想法?或者如何正确传递该列表?
干杯。
答案 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 %}