https://qiita.com/44d/items/897e5bb20113315af006 を参考にさせていただいた。
マッチングアプリで、「いいね」をお互いに交換できた人のみ、選択できるようにしてみた。
ok_listは、前回考えたアルゴリズムをそのまま利用した。
ポイントは、 form.fields['receiver'].queryset = User.objects.filter(id__in= ok_list(request)) の部分。
@login_required
def dmessage_new(request):
if request.method == 'POST':
form = DmessageForm(request.POST)
if form.is_valid():
dmessage = form.save(commit=False)
dmessage.sender = request.user
dmessage.save()
return redirect(dmessage_detail, dmessage_id=dmessage.pk)
else:
form = DmessageForm()
form.fields['receiver'].queryset = User.objects.filter(id__in= ok_list(request))
return render(request, "dmessages/dmessage_new.html", {'form': form})
def ok_list(request):
like_list = Matching.objects.filter( Q(approaching__username__icontains=request.user) )
liked_list = Matching.objects.filter( Q(approached__username__icontains=request.user) )
return (like_list.values_list('approached',flat=True)).intersection(liked_list.values_list('approaching',flat=True))
0 件のコメント:
コメントを投稿