我想获取一个特定的Video
对象,然后使用文档中所述的ForeignKey反向查找找到与之关联的所有Rating
对象。
我有模特:
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()
命令。我不确定这里缺少什么。 最佳答案
您已在外键循环中指定related_name。因此rating_set现在不应该工作。
你可以像
ratings_of_video = vid_rate.video.all()
更好的命名约定是在您的related_name中使用
ratings
class Rating(models.Model):
video = models.ForeignKey('Video', related_name='ratings', null=True)
然后像查询
ratings_of_video = vid_rate.ratings.all()