私はdjango-relationshipsを使用して、ユーザーが相互にフォローできるようにしています。ボブがジョーに続く場合。Bob は Joe のすべての写真を見ることができます。ただし、ボブがジョンをブロックすると、ジョンはボブの写真ではなくなります。
私の問題は、ブロックされたユーザーからのコンテンツを制限する方法がわからないことです。例を見てきましたが、まだ解決策が見つからないようです。
フォトグラファーがユーザーの FK であると仮定する
これが私の FollowPhoto リソースです (このリソースは、ユーザーがフォローしているユーザーに属するすべての写真を返します)。
FollowingPhoto(ModelResource):
photographer = fields.ForeignKey(PhotographerResource, 'photographer', full=True)
class Meta:
queryset = Photo.objects.all().order_by('-postTime')
resource_name = 'following'
fields = ['id', 'title', 'url', 'likes','postTime','photographer', 'location_id', 'location_name']
authentication = BasicAuthentication()
authorization = DjangoAuthorization()
serializer = Serializer(formats=['json'])
include_resource_uri = False
filtering = {
'postTime': ALL,
'photographer' : ALL_WITH_RELATIONS,
}
def get_object_list(self, request):
return super(FollowingPhoto, self).get_object_list(request).filter(photographer__user__in = request.user.relationships.following())
get_object_list でお気づきかもしれませんが、フォローしているユーザーのすべてのコンテンツが返されます。ブロックされているユーザーがこのリストに表示されないようにするにはどうすればよいですか?
Django-relationships アプリは、postgresql で2 つのテーブルを生成します。以下のテーブルは relationship_relationships テーブルです。
id from_user to_user_id status_id created
[PK] serial integer integer timestamp
6 1 5 1 2012-10-05 20:10:29.848667+00"
7 1 3 1 2012-10-05 20:11:23.319961+00"
もう 1 つのテーブルは relationship_relationshipstatus テーブルです。
id name verb from_slug login_required private
[PK] serial character character character varying boolean boolean
1 Following follow friends FALSE FALSE
2 Blocking block ! TRUE TRUE
以下に、Django-relationships models.py へのリンクを追加して、さらに明確にすることができます。