2012-12-30 67 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