0

DjangoAuthorization メソッドで Tastypie を使用しています。

私はこのような StudentResource を持っています:

class StudentResource(ModelResource):
  friends = fields.ToManyField(StudentResource, 'friends', null=True)

  class Meta:
    queryset = Student.objects.all()
    resource_name = 'student'
    authorization = DjangoAuthorization()

そのため、私の生徒にはそれぞれ多くの友達がいます。

ここで、ユーザーが友人のみを API 呼び出ししているときに戻りたいと思います。(彼の django id に基づく)。(リソースにフィルターを追加するだけではなく、ユーザーが自分の友達にしかアクセスできないようにしたい)

get_list Tastypie 関数を使用して GET メソッドをオーバーライドできましたが、かなり見栄えが悪いようです。

それで、それを行う良い方法は何ですか?

どうも !

4

3 に答える 3

0

ここに記載されている「ユーザーごとのリソース」を使用したくない場合 - http://django-tastypie.readthedocs.org/en/latest/cookbook.html#creating-per-user-resources

あなたへの私の提案は、リクエストがtastypieリソースに続く前に、問題のユーザーに基づいて友達をフィルタリングする承認ミドルウェアを書くことです. このようにして、リソース内の学生の友達だけを取得します。

ミドルウェアの作成については、このリンクを参照してください - https://docs.djangoproject.com/en/dev/topics/http/middleware/

ミドルウェアの順序に細心の注意を払ってください。

「django.contrib.auth.middleware.AuthenticationMiddleware」の後にミドルウェアを配置する必要があります

于 2013-11-04T05:56:39.160 に答える
0

Nested Resourcesを使用します。

への GET 呼び出し/student/{{ id }}/friends は、生徒の友達のリストを返します。

prepend_urls応答を作成するメソッドをオーバーライドして定義するだけです

于 2013-10-31T13:45:06.340 に答える