gpt4 book ai didi

django - MultipleChoiceField/CheckboxSelectMultiple 值未在绑定(bind)表单上恢复

转载 作者:行者123 更新时间:2023-12-02 02:21:04 25 4
gpt4 key购买 nike

我正在构建表单的“编辑”页面。此页面应该显示包含已保存数据的表单,因此该表单已预先填充了已保存的数据。对于大多数字段来说,它工作得很好,但我遇到了无法恢复的 MultipleChoiceField/CheckboxSelectMultiple 值的问题。因此,不是用保存的表单中的数据选中相应的复选框,而是将它们全部取消选中。这是为什么?

表单.py

class MemberForm( forms.ModelForm ):

# ......

MODEL_CATEGORIES = (
('advisor', 'advisor'),
('member', 'member'),
('admin', 'admin'),
)


model_categories = forms.MultipleChoiceField(
widget = forms.CheckboxSelectMultiple,
choices = MODEL_CATEGORIES
)

class Meta:
model = Member
fields = [ 'model_categories' ]

型号

class Member( models.Model ):

model_categories = models.CharField(
max_length = 255,
null = True,
blank = True )

Controller

def profile_edit_form( request ):
user = request.user or None

# Get user member profile instance
instance = get_object_or_404( Member, author = user )

form = MemberForm( request.POST or None, instance = instance )

context = {
"form" : form,
"instance": instance
}

if form.is_valid():
# ...
return redirect( 'profile_display' )
else:
# Initial form display, and redisplay of invalid form
return render( request, 'profile_edit_form_view.html', context )

模板

<form action="/accounts/profile-edit-form/" method="post">
{% csrf_token %}

{{ form }}


<input type="submit" value="Submit"/>
</form>

最佳答案

您可以尝试使用initial形式

form = MemberForm( request.POST or None, instance = instance, 
initial={'model_categories': 'advisor'})

关于django - MultipleChoiceField/CheckboxSelectMultiple 值未在绑定(bind)表单上恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45879476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com