django反向查找外键不工作

时间:2017-02-16 04:04:58

标签: python django foreign-keys

我想获取一个特定的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()命令。我不确定这里缺少什么。

1 个答案:

答案 0 :(得分:1)

您在外键loopkup中指定了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()