我有一张表格:
somemodels = forms.ModelMultipleChoiceField(queryset=SomeModel.objects.none, widget=forms.CheckboxSelectMultiple, required=False)
我使用__init__函数设置了我的查询集,并且甚至可以在页面加载时将现有连接提供给我的列表(现有对象被标记为已选中)。
def __init__(self, *args, **kwargs):
qs = kwargs.pop('SomeModel')
inital_object = kwargs.pop('someothermodel')
super(SelectDatesForm, self).__init__(*args, **kwargs)
self.fields['timeframes'].queryset = qs
selected_items = qs.filter(someothermodels=inital_object) #manytomany relationship
self.fields['somemodels'].initial = selected_timframes
我得到的问题是以下事实的组合:a)HTML仅提交已检查输入的数据; b)django表单从" cleaning_data"中删除所有已存在的对象。
当我提交表单时,我得到的表单的 cleaning_data 列表只包含新选择的值,而不是构建页面时已选择的值。
要删除现有的(例如,如果用户取消选中最初选中的复选框),我需要知道a)所有选定值的总列表,或b)未选中的值列表。
在没有真正浏览原始POST数据的情况下,是否有顺畅的方法?