我在我的示范场,它指示用户是否愿意接收电子邮件更改布尔值
receive_invites = models.BooleanField(default=True, help_text="Receive an invite email from friends")
我也有一个选项观点:
[X]我不想接收电子邮件......
通过默认 receive_invites是真因此复选框是打勾。不过,我希望用户勾选复选框,以便将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)
整点是不改变字段名,我有具有相同命名约定的其他字段(试图保持一致) –
@NgoMinhNam如果它创建这些问题,命名约定有什么意义?最终目标是让代码可读,而不是因为一些约定而使其复杂化。 – DrTyrsa