0

私はDjangoを初めて使用するので、ここで完全に軌道から外れている可能性があります...

オブジェクトが保存されたときに現在のユーザーにアクセスできるかどうかについて多くの質問を見てきましたが、私の問題は少し異なります: admin (の特別なサブクラス) を使用して、オブジェクトのユーザー セットを表示したいと思います。ただし、アクセスできるオブジェクトのみです。

現時点では、特別な「OpAdmin」アプリを作成することでこれを実行しようとしています。その唯一の目的は、この専門の管理者を持つことです。OpAdmin モデルは次のようになります。

class OperatorAircraftManager(models.Manager):  
    def get_query_set(self, user):
        return mainapp.models.Aircraft.objects.filter(owner=user.employer)

class Aircraft(mainapp.models.Aircraft):
    class Meta:
        proxy = True
    objects = OperatorAircraftManager()

しかし、ユーザー情報を に渡す方法、またはこれが完全に間違ったアプローチであるかどうかを理解するのに苦労しています(または代わりにget_query_set何かをすべきですか?) 繰り返しますが、これはユーザー情報を で保存することではありません新しい航空機、または変更できる人を制限しますが、管理者でそれらを見ることができる人を制限することについて。任意の提案をいただければ幸いです --- ありがとうございます。GroupsPermissions

編集:Djangoで使用するための「現在のユーザーを取得」パッケージもいくつか見たことを追加する必要がありますが、それらはすべて少しハックに見えるため(たとえば、現在のコールスタックを見ると)、行くのをためらっていますそのルート。リクエストコンテキストに関する共有情報をキャッシュする受け入れられた方法がある場合、それは知っておくとよいでしょう...

4

1 に答える 1

4

「彼または彼女がアクセスできるオブジェクトのみ」の意味がわかりません。しかし、管理画面ですべてのオブジェクトをそれぞれの所有者に限定したい場合は、次のようにします。

def queryset(self, request):
    """Limit Pages to those that belong to the request's user."""
    qs = super(PageAdmin, self).queryset(request)
    return qs.filter(owner=request.user)
于 2013-08-07T02:39:57.883 に答える