This is the view to render the page and form
def audience_view(request, pk):
audience = get_object_or_404(Audience, pk=pk)
form = AudienceForm(audience=audience)
context = {
'form': form,
}
if request.method == 'POST':
form = AudienceForm(request.POST, audience=audience)
if form.is_valid():
for profile in Profile.objects.all().order_by('full_name'):
field_name = f'profile_{profile.id}'
subscribed = form.cleaned_data[field_name]
defaults = {
'subscribed': 'No' if not subscribed else 'Yes',
'mailing_list_log': f'''Unsubscribed''' if not subscribed else f'''Subscribed '''
}
MailingList.objects.update_or_create(audience=audience, user=profile.user, defaults=defaults)
return redirect('audience', pk=audience.pk)
return render(request, 'marketing/audience_detail.html', context)
I have stripped commenting so it can all fit...