2022年8月1日月曜日

djangoでもpythonの関数型機能が役立つ

 マッチングの機能を作成してみた。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

0 件のコメント:

コメントを投稿