2012-06-18 35 views
0

奇怪的錯誤這是我的模型Django的:在反向相關領域

class UserAward(models.Model): 
    user = models.ForeignKey(User, related_name='awards') 
    award = models.CharField(max_length=255) 
    week = models.SmallIntegerField(default=0) 
    year = models.IntegerField(default=0) 
    points_gained = models.IntegerField(default=0) 
    timestamp = models.DateTimeField(auto_now=True) 

,當我給這個:

users = User.objects.filter(awards__award='level up', awards__week=prev_wk, awards__year=prev_year).order_by('-profiles__level')

我得到這個錯誤:

Related Field has invalid lookup: year

如果我刪除filter(awards__year=prev_year)查詢工作正常。

問題在哪裏?

+0

最近是否添加'year'到模型中想要的一年?您需要執行數據庫遷移以確保該表也具有該列。否則,'prev_year'的類型和值是什麼? –

+0

prev_year是2012. Prev_year實際上是前一週的年份。將做數據庫遷移,雖然'年'是從一開始 – xpanta

+0

是否有一個原因,你沒有使用DateField和分別存儲年/周? –

回答

3

試試這個:

users = User.objects.filter(awards__award='level up').filter(awards__week=prev_wk).filter(awards__year__exact=prev_year).order_by('-profiles__level') 

基本上Django使用__year來提取日起一年Field對象它認爲你從外地