2011-05-30 41 views
2

我是新來的django所以可能不知道水貨,但我已經通過谷歌搜索,並沒有得到任何答案。 我有這樣的模式:Manytomany字段返回空列表

class Word(models.Model): 
    word = models.CharField(max_length=100) 
    img = models.ImageField(upload_to='img/', blank=True, null=True) 
    audio = models.FileField(upload_to='audio/', blank=True, null=True) 
    language = models.ForeignKey(Language) 
    def __unicode__(self): 
     return self.word 

class Lesson(models.Model): 
    title = models.CharField(max_length=100) 
    language = models.ForeignKey(Language) 
    lesson_words_list = models.ManyToManyField(Word) 
    def __unicode__(self): 
     return self.title 

,我已經在視圖中下一個函數:

def view_lesson(request, language, lesson_title): 
    cur_lesson = Lesson.objects.filter(title__iexact = lesson_title).get(language__name__iexact=language) 
    words_list = cur_lesson.lesson_words_list.all() 
    return render_to_response("view_lesson.html", {"language":language, "lesson_title": lesson_title, "words_list":words_list}) 

這是我如何調用它的模板:

{% for Word in words_list %}   
{{ Word.word }} 
{% endfor %} 

的問題是words_list是通過管理員清空,我清楚地看到我的課有相關的詞。 爲什麼它可能是空的?我應該在哪裏尋找答案?

+0

你是如何顯示在模板中的單詞列表?此外,你的查詢應該是Lesson.objects.get(title__iexact = lesson_title,language__name__iexact = language)。沒有點過濾,然後get'ing – 2011-05-30 17:42:44

+0

哦,thnx的提示我還沒有看到。 – Noctule 2011-05-30 17:51:19

回答

2

{{ cur_lesson }} 

顯示你的模板正確的教訓是什麼?

嘗試:

{% for word in cur_lesson.lesson_word_list.all %} 
    {{ word }} 
{% endfor %} 

也看

{{ cur_lesson.lesson_word_list.all }} 

顯示你的模板字的正確列表

+0

我試過所有這些,但它都是空的,我只看到價值觀 - 語言和lesson_title。 words_list就像[] 其餘的只是沒有顯示。 – Noctule 2011-05-30 18:14:45

+0

所以你查詢是沒有從數據庫中得到正確的教訓不是?你確定查詢和你的網址是正確的嗎?即視圖是否獲得了正確的'語言'和'lesson_title'值? – 2011-05-30 18:17:30

+0

是的,這似乎是這樣,我不明白爲什麼它是這樣的。 網址似乎是正確的,因爲它的呈現沒問題,是的,我有正確的'language'和'lesson_title'值,至少當它們顯示在我的模板中時它們沒問題。 – Noctule 2011-05-30 18:33:33