0

特定のユーザーのためにTastypieを介して何かを返す前に、どのように処理を行うことができますか?

たとえば、ユーザーが投稿を持ち、他の人の投稿をフォローできるアプリがあるとします。この人の投稿とフォローしている人の投稿を組み合わせて、1つの配列として返したいと思います。

したがって、Tastypieで、この人のタイムラインから最新の20件の投稿を取得したいとします。ユーザーを取得し、この情報を処理してJSONで返す必要がありますが、どのようにすればよいか正確にはわかりません。これを処理し、Tastypieを使用して返します。

何か助けはありますか?

4

1 に答える 1

3

get_object_listでより複雑な処理を行います。脱水プロセスが開始する前、つまり、返されるJSONが作成される前に呼び出されます。

class PostResource(ModelResource):
    class Meta:
        queryset = Post.objects.all()

    def get_object_list(self, request):
        this_users_posts = super(PostResource, self).get_object_list(request).filter(user=User.objects.get(user=request.user))
        all_the_posts_this_user_follows = super(PostResource, self).get_object_list(request).filter(follower=User.objects.get(user=request.user))

        return this_users_posts | all_the_posts_this_user_follows

特定のケースで機能するように、これらのクエリを修正する必要があります。次に、それらを連結することによって、取得した2つの異なるクエリセットを組み合わせるのがコツです。使用| &を使用してフルセットを取得し、オーバーラップのみを取得します。フルセットが必要です(ユーザーが自分の投稿をフォローできる場合を除いて、結果のスーパーセットでdistinct()を呼び出すことができます)。

于 2012-09-17T14:11:01.113 に答える