2017-10-18 1 views
0

Ich habe eine Anwendung mit einem Benutzer-Follower-System, die ich erreichen konnte, aber ich versuche, einzelne Benutzer Follower und folgende abrufen, aber ich konnte es nicht bekommen. Unten ist mein Codedjango Benutzer Follower Abruf aus der Datenbank

View.py

def following(request): 
    query = Contact.objects.filter(request.user.following) 
    context = { 
     'query': query 
     } 
    template = 'following.html' 
    return render(request, template, context) 

Models.py

class Contact(models.Model): 
    user_from = models.ForeignKey(User,related_name='rel_from_set') 
    user_to = models.ForeignKey(User,related_name='rel_to_set') 
    created = models.DateTimeField(auto_now_add=True,db_index=True) 

    class Meta: 
     ordering = ('-created',) 

    def __str__(self): 
     return '{} follows {}'.format(self.user_from,self.user_to) 

User.add_to_class('following',models.ManyToManyField('self', through=Contact,related_name='followers', symmetrical=False)) 

Vorlage

{% load staticfiles %} 
{% block content %} 
<h2>following</h2> 
<div id="action-list"> 

<h1>{{ results.get_full_name }}</h1> 
</div> 
{% endblock %} 

Zusatzcode würde auf Anfrage hinzugefügt werden.

+0

Bitte geben Sie mehr Code –

+0

Wie sehen die Modelle aus? – Jonathan

Antwort

0

Dies könnte auf zwei Arten gelöst werden. Erstens: Ihr Filter ist nicht korrekt:

def following(request): 
    query = Contact.objects.filter(user_from=request.user) 
    context = { 
     'query': query 
     } 
    template = 'following.html' 
    return render(request, template, context) 

Eine andere Lösung mit der umgekehrten Beziehung der Werke related_name

def following(request): 
    query = request.user.rel_from_set.all() 
    context = { 
     'query': query 
     } 
    template = 'following.html' 
    return render(request, template, context) 

mit ähnlichen, natürlich, für die user_to Bereich Contact.

BEARBEITEN: Ihre Vorlage verwendet nicht die richtigen Kontextvariablen, die Sie in Ansicht following definiert haben. Also müssen Sie es ein wenig zwicken:

+0

Es werden nicht die folgenden oder Nachfolger angezeigt. Bitte helfen Sie mir, – King

+0

Ich denke, Sie müssen Ihre Frage besser angeben. Meinst du zum Beispiel: 'User.objects.filter (rel_from_set__user_to = request.user)'? – White

+0

Nein. Ich habe Ihre Lösung angepasst, aber die Benutzer, die mir folgen, oder die Benutzer, die ich befolge, wenn ich sie ändere, werden nicht in user_to – King

Verwandte Themen