1

ユーザーが(チェックボックスを介して)含めたいメーリングリストを選択できるようにするフォームセットにフォームがあります。リストはクエリから生成されます。

form.fields['email_list'].queryset = EmailList.objects.filter(is_active=True, is_visible=True)

ユーザーに表示されないメーリング リストもあります ( is_visible=False)。ユーザーはこれらのレコードを表示できませんが、管理者が (管理パネルを介して) これらのリストのいずれかにユーザーを追加した場合、それらのリストは、ユーザーが表示可能なリストに加えた変更と共に保存する必要があります。

is_visible=FalsePOST からオブジェクトを取得し、クエリの出力 (... ) を追加する必要があるように思えます。次に、それを保存すると、それらの 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)

誰かがこれを達成する方法を教えてもらえますか?

4

0 に答える 0