Ich benutze django-follow , um es Benutzern zu ermöglichen, Objekten zu folgen - in diesem Beispiel Schauspieler in Filmen.
Ich ziehe eine Liste von Filmschauspielern mit
zurück %Vor%Aber ich möchte auch dem Benutzer Filme vorschlagen, die auf den Schauspielern basieren, denen sie folgen. Dies muss kein komplexer Algorithmus dessen sein, was sie bereits mögen und relative Filme vorschlagen, nur ein einfaches "weil Sie diesem Schauspieler folgen und dieser Schauspieler ist in diesem Film, schlagen Sie es dem Benutzer vor"
Ich habe diesen ziemlich klobigen Weg, dies jetzt zu tun ...
%Vor%Was funktioniert, aber ich bin mir sicher, dass es einen besseren Weg gibt?
Am wichtigsten Ich möchte dem Benutzer auch zeigen, warum dieser Film empfohlen wurde, indem er die Schauspieler oder Genres anzeigt, denen der Benutzer folgt, also könnte das Endergebnis etwas wie ...
%Vor%Hinweis Ich würde mehrere Filme zurückgeben wollen.
Hier sind meine Modelle:
Filmmodell wie folgt definiert:
%Vor%Und Schauspielermodell:
%Vor%Hinter den Kulissen sind Follow-Objekte im Wesentlichen eine Viele-zu-Viele-Beziehung mit Feldern, die jedes Mal hinzugefügt werden, wenn Sie ein Modell registrieren.
Ihre Frage bezieht sich nur auf Schauspieler, aber Ihr Code umfasst auch Genres. Es ist nicht besonders schwer, beides abzudecken, ich bin mir nur nicht sicher, wie es dir gefällt.
Ich denke, Sie können Ihre Filmobjekte in einem Abfrage-Set erhalten:
%Vor% Wie in den Dokumenten für __in
lookups erwähnt, ist eine Datenbank zurück Enden geben Ihnen eine bessere Leistung, wenn Sie die Unterabfragen vor der Verwendung von ihnen auswerten:
Wenn Sie nur die passenden Filme zurückgeben wollen, sind das meiner Meinung nach die prägnantesten Wege, es auszudrücken.
Für den Teil, in dem Sie die Gründe für die Filme angeben, sehe ich keinen eleganteren Umgang damit, als den Filmabfragesatz zu durchlaufen und die Informationen von Hand hinzuzufügen. Ich würde definitiv die Abfragesätze für aktor_ids und genre_ids definieren, bevor dies getan wird, obwohl, ob oder nicht ich sie früh bewertete immer noch von der db-Back-End abhängen würde.
%Vor%Tags und Links python django django-models django-orm