2017-05-13 2 views
0

filtert, also habe ich zZ dieses als mein Profilmodell für jeden Benutzer.Wie man Benutzer abhängig von einer models.charfield Auswahl in django

class Profile(models.Model): 
user = models.OneToOneField(User) 
location = models.CharField(max_length=120, choices=LOCATIONS,null=True, blank=True) 
picture = models.ImageField(upload_to=upload_location, null=True, blank=True) 

Wie filer ich Benutzer abhängig von den Wahlen, die im Standortfeld gegeben werden? Wenn beispielsweise der aktuelle Benutzer London ausgewählt hat, werden in der Vorlage nur Ergebnisse von Benutzern/Profilen mit demselben Standort angezeigt.

Muss ich eine if-Anweisung oder eine for-Schleife in der Datei views.py erstellen? oder verwende ich eine q-Suche? wenn mir jemand ein paar Hinweise geben oder mir in die richtige Richtung zeigen könnte, wäre das erstaunlich!

danke für jede Hilfe im Voraus

Antwort

0

Es wird empfohlen, auf Ihre Anforderung, die Ergebnisse in der Ansicht und zu filtern, können Sie die native django queryset verwenden nur. Sie können eine Ansicht wie folgt erstellen:

views.py

from django.contrib.auth.models import User 
from django.shortcuts import render 

def users(request): 
    location = request.GET.get('location', 'default_location') 
    users = User.objects.filter(profile__location=location) 
    return render(request, 'users.html', {'users': users}) 

So zum Beispiel, wenn Sie eine URL haben /users/ für Auflistung der Benutzer, den Standort-Parameter übergeben werden Ihre Benutzer /users/?location=london

+0

filtern Hallo danke! Gibt es eine Möglichkeit, user request.user zu verwenden, so dass der Standort des Benutzers in seinem Profil festgelegt wird? – caldf

+0

Ja, wenn Sie den Standard gemeint haben, können Sie das 'default_location' durch 'request.user.profile.location' ersetzen. –

Verwandte Themen