我创建了两个模型:
class WorldForm(forms.ModelForm):
country = forms.ModelMultipleChoiceField(queryset = Country.objects.all(), widget=forms.CheckboxSelectMultiple())
class Meta:
model = World
fields = ('name',)
我想让用户有可能在网站上创建新世界,但在创建过程中,他无法从列表中取消选中任何对象(必须检查每个对象,但他无法看到它们)。 我创建了一个form.py:
var finalValue = person.PersonDatas.Where(x => x.FinalValue != null);
但是这段代码为用户提供了选择对象和取消选中对象的可能性。怎么改呢?
对我来说最好的想法是当用户创造他的“世界”时 - 他只能输入一个世界名称而他没有看到国家的名字,但每个对象“国家”都将包含在他的“世界”中。那可能吗?如何更改表单中的代码以执行此类操作?
答案 0 :(得分:0)
我认为我们可以通过覆盖ModelForm.save()
方法来实现这一目标:
class WorldForm(forms.ModelForm):
class Meta:
model = World
fields = ('name',)
def save(self, commit=True):
super(WorldForm, self).save(commit=False)
is_new = not self.instance.pk
self.instance.save()
if is_new:
# It's a new world. Fill it with countries!
self.instance.country.add(*Country.objects.all())
else:
self._save_m2m()
return self.instance