2017-02-16 117 views
1

我想要获取特定的Video对象,然后使用文档中所述的ForeignKey反向查找来查找与其关联的所有Rating对象。django反向查找foreignkey不工作

我有型号:

class Video(models.Model): 
... 
    rating_int = models.IntegerField(default=1, choices=CHOICES, name='rating_int') 
    def __str__(self): 
     return self.title 


class Rating(models.Model): 
    video = models.ForeignKey('Video', related_name='video', null=True) 

和看法:

def video_ratings(request): 
    vid_rate = Video.objects.get(pk=1) 
    ratings_of_video = vid_rate.rating_set.all() 
    context = { 
     'vid_rate': vid_rate, 'ratings_video': ratings_of_video 
    } 
    return HttpResponse(template.render(context, request)) 

当我试图运行此我得到一个错误'Video' object has no attribute 'rating_set'

但是,当我读Django文档,它告诉我当你做反向查找时,你需要使用这个_set.all()命令。我不确定这里缺少什么。

回答

0

您在外键的loopkup中指定了related_name。所以rating_set现在不应该工作。

您可以查找喜欢

ratings_of_video = vid_rate.video.all() 

更好的命名惯例会在你related_name

class Rating(models.Model): 
    video = models.ForeignKey('Video', related_name='ratings', null=True) 

使用ratings然后查询像

ratings_of_video = vid_rate.ratings.all() 
+0

唉唉,这是问题!没有在文档中看到,感谢您的提示 – ratrace123