モデルに、ユーザーがメールを受信するかどうかを示すフィールドがあります
receive_invites = models.BooleanField(default=True, help_text="Receive an invite email from friends")
オプション付きのビューもあります:
[ x ] メールを受け取りたくない...
デフォルトでreceive_invites はTrueであるため、チェックボックスがオンになっています。ただし、 receive_invites をFalseに変更するには、ユーザーにチェックボックスをオンにしてもらいたいと思います。これを実現するために、ModelForm で次のことを行いました。誰かがこれを行うためのよりエレガントな方法を持っていますか?
class UnsubscribeForm(forms.ModelForm):
class Meta:
model = Entrant
fields = ('receive_invites')
def __init__(self, *args, **kwargs):
if kwargs.has_key('instance'):
instance = kwargs['instance']
if instance.receive_invites:
instance.receive_invites = False
else:
instance.receive_invites = True
super(UnsubscribeForm, self).__init__(*args, **kwargs)
そして、私はこれを持っています:
if request.method == 'POST':
unsubscribe_form = UnsubscribeForm(request.POST, instance=me)
if unsubscribe_form.is_valid():
receive_invites = unsubscribe_form.cleaned_data['receive_invites']
if receive_invites:
user.receive_invites = False
else:
user.receive_invites = True
unsubscribe_form.save()
return redirect('index')
else:
unsubscribe_form = UnsubscribeForm(instance=me)