2017-05-08 13 views
-1

セットアップを試してみると、ユーザーは予約を購入できますが、ログインしたときに店舗内で自分の予約のみを見ることができます。Saleorは、 Python/Djangoユーザーの電子メールによるアクセスを制限するDjango Saleor

カテゴリを使用してアクセスをブロックする方法はありますか? 「Johnson Family」のカテゴリを作成して、特定のユーザーのみが「Johnson Family」カテゴリにアクセスできるように選択することができます。次に、それらのユーザーは、ショップ内で特に「商品」または「予約」を表示します。

編集:謝罪、私は 'どうすればいいのですか'もちろん、それはDjangoで行うことができますか?

+0

特定の用途の出力を表示している間、ユーザー権利に基づいて製品をフィルタリングできますか? –

+0

問題に固有の解決策を得るために、何をしようとしたのか、どこで失敗したのか、問題のモデルクラスを設定したコードを提供する必要があります。 –

答えて

1

あなたは一般的な質問をしてきたように、ここでは一般的な解決策は以下のとおりです。

は、私はカテゴリを使用してへのアクセスをブロックすることができます方法はありますか?

はい、可能です。 Django authモジュールには、グループを作成してこのグループにユーザを追加できるグループの概念があります。あなたのビューでは、ユーザーが特定のグループに属しているかどうかを確認することができます。そして、これらのユーザーは、その後、店の中に、具体的にそれらのための製品」や「予約」を参照してくださいだろう

from django.contrib.auth.models import User, Group 

#create the group 
group = Group(name='Johnson Family') 
group.save() 

# Add user to the group 
user = User.objects.get(email='[email protected]') 
user.groups.add(group) 

# Call this method from your view to check if user belongs to a group 
def is_member(user, group_name): 
    return user.groups.filter(name=group_name).exists() 

:あなたのような何かを行うことができます。

このため、クエリーセットをフィルタリングして、特定のユーザーに属するオブジェクトを返すことができます。例えば(製品と予約モデルにはユーザーに外部キーがあると仮定します)。

Product.objects.filter(user=some_user) 
Booking.objects.filter(user=some_user) 
関連する問題