2017-05-13 9 views
0

私は現在、各ユーザーのプロファイルモデルとしてこれを持っています。djangoのmodels.charfieldの選択に応じてユーザーをフィルタリングする方法

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) 

ロケーションフィールドに指定された選択肢に応じてユーザーをファイリングする方法はありますか?たとえば、現在のユーザーにロンドンが選択されている場合、テンプレートでは、同じ場所のユーザー/プロファイルの結果のみが表示されます。

if文またはforループをviews.pyに作成する必要がありますか?または私はqのルックアップを使用するのですか?もし誰かが私に指針を与えたり、正しい方向に私を見せてくれれば驚くべきことだ!

は事前に任意の助け

答えて

0

をありがとうございましたビューに結果をフィルタリングし、自分の要件に基づいて、あなただけのネイティブDjangoのクエリセットを使用することができますお勧めします。あなたがユーザーを一覧表示するためのURL /users/を持っている場合、例えば、位置パラメータを渡すと、ユーザー/users/?location=london

+0

をフィルタリングしますので

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

:あなたはこのようなビューを作成することができますありがとね!ユーザーにrequest.userを送信する方法はありますか。 – caldf

+0

はい、デフォルトを意味する場合は、 'default_location'を 'request.user.profile.location'に置き換えることができます。 –

関連する問題