ユーザーが(チェックボックスを介して)含めたいメーリングリストを選択できるようにするフォームセットにフォームがあります。リストはクエリから生成されます。
form.fields['email_list'].queryset = EmailList.objects.filter(is_active=True, is_visible=True)
ユーザーに表示されないメーリング リストもあります ( is_visible=False
)。ユーザーはこれらのレコードを表示できませんが、管理者が (管理パネルを介して) これらのリストのいずれかにユーザーを追加した場合、それらのリストは、ユーザーが表示可能なリストに加えた変更と共に保存する必要があります。
is_visible=False
POST からオブジェクトを取得し、クエリの出力 (... ) を追加する必要があるように思えます。次に、それを保存すると、それらの M2M レコードがすべて保存されます。しかし、私はそれを機能させることができません。
フォームセットのビューは次のようになります。
FamilyInlineFormSet = modelformset_factory(Family, extra=0, formset=FamilyBaseFormSet)
FamilyMemberInlineFormSet = modelformset_factory(FamilyMember,
extra=0, formset=FamilyMemberBaseFormSet)
if request.method == "POST":
family_formset = FamilyInlineFormSet(request.POST, request.FILES,
queryset=Family.objects.filter(id=request.user.family.id), prefix='f')
family_member_formset = FamilyMemberInlineFormSet(request.POST, request.FILES,
queryset=FamilyMember.objects.filter(family=request.user.family.id), prefix='fm')
if family_formset.is_valid() and family_member_formset.is_valid():
####### HERE IS WHERE THE CODE SHOULD GO, I BELIEVE #############
family_formset.save()
family_member_formset.save()
return redirect('/school/thanks/')
else:
family_formset = FamilyInlineFormSet(queryset=Family.objects.filter(id=request.user.family.id), prefix='f')
family_member_formset = FamilyMemberInlineFormSet(queryset=FamilyMember.objects.filter(family=request.user.family.id), prefix='fm')
context = RequestContext(request,{
'family_formset': family_formset,
'family_member_formset': family_member_formset,
})
return render_to_response("school/family/manage_family_members.html", context)
モデル ファイルのエントリは次のとおりです。
email_list = models.ManyToManyField('EmailList', verbose_name="Email Lists", blank=True, null=True)
誰かがこれを達成する方法を教えてもらえますか?