マッチングの機能を作成してみた。DjangoのListViewで相手を選択する、選択されるのリスト。マッチしたユーザーのリストを取得するには、どうするかで、けっこうはまる。
ようやく解決方法をみつける。pythonのmap関数、ラムダ式が役立った。
def get_context_data(self):
context = super().get_context_data()
like_list = Matching.objects.filter( Q(approaching__username__icontains=self.request.user) )
liked_list = Matching.objects.filter( Q(approached__username__icontains=self.request.user) )
context['like_list']=like_list
context['liked_list']=liked_list
tmplist=(like_list.values_list('approached',flat=True)).intersection(liked_list.values_list('approaching',flat=True))
context['ok_list']=list(map( lambda ob: User.objects.get(id=ob) ,tmplist))
return context
context = super().get_context_data()
like_list = Matching.objects.filter( Q(approaching__username__icontains=self.request.user) )
liked_list = Matching.objects.filter( Q(approached__username__icontains=self.request.user) )
context['like_list']=like_list
context['liked_list']=liked_list
tmplist=(like_list.values_list('approached',flat=True)).intersection(liked_list.values_list('approaching',flat=True))
context['ok_list']=list(map( lambda ob: User.objects.get(id=ob) ,tmplist))
return context
0 件のコメント:
コメントを投稿