2012-12-30 69 views
0

我想将我的views.py中的对象列表传递给我的html模板,但我无法访问我的HTML模板中的对象模型属性。请检查下面的代码:访问Django中每个列表组件的模型属性

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,因为该属性不可用或无法访问。

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

干杯。

回答

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 %} 
+0

由于某种原因,它不适合我。 使用引号并没有太多变化。实际上,我并没有从alert中获取“undefined”('{{my_list.0.pub_date}}'),我根本没有任何价值。 我不知道我在做什么错=( – marcelosalloum

+0

请将您的模板代码粘贴到dpaste或pastebin上并共享链接 –

+0

好吧,它在dpaste >> http://dpaste.com/hold/856821/> >第16行和第17行 – marcelosalloum