2017-02-16 2 views
1

Ich möchte ein bestimmtes Video Objekt erhalten und dann alle Rating Objekte finden, die damit verknüpft sind, indem ForeignKey reverse lookup wie in den Dokumenten beschrieben verwendet wird.Django Reverse Lookup Fremdschlüssel funktioniert nicht

Ich habe Modelle:

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) 

und Ansichten:

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)) 

Wenn ich versuche, das ich einen Fehler 'Video' object has no attribute 'rating_set'

bekommen zu laufen, aber wenn ich die django docs lesen es sagt mir, Wenn Sie eine umgekehrte Suche durchführen, müssen Sie diesen Befehl _set.all() verwenden. Ich bin mir nicht sicher, was hier fehlt.

Antwort

0

Sie haben related_name in Ihrem Fremdschlüssel loopkup angegeben. also sollte rating_set jetzt nicht funktionieren.

können Sie Nachschlag wie

ratings_of_video = vid_rate.video.all() 

Eine bessere Namenskonvention ratings in Ihrem related_name

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

und dann abfragen, wie

ratings_of_video = vid_rate.ratings.all() 
+0

ahhh, dass das Problem war zu verwenden, wird sein! Habe das in den Unterlagen nicht gesehen, danke auch für den Tipp – ratrace123

Verwandte Themen