我们有一个django模型,包含了一个多到多的领域。我们使用相同的表单来添加/编辑对象。当加载了一个用于编辑的现有对象时,所有字段都有与它们关联的值,除了多到多字段(没有选择 MultipleSelectBox Widget )。
是否有特殊方法将值绑定到多到多字段,以便在表单加载对象以进行编辑时,字段的当前值出现在MultipleSelectBox Widget中。
我试着阅读用户在SO上提出的类似问题,但是找不到我的查询的答案。
发布于 2011-09-08 08:26:36
试着这么做!这是我的例子,向你展示你是如何做到的:
class FirstModel(models.Model):
title = models.CharField(max_length = 100, unique = True)
class SecondModel(models.Model):
name = models.CharField(max_length = 100, unique = True)
first_model = models.ManyToManyField(FirstModel)
class MyForm(forms.Form):
name = forms.CharField(max_length = 100, required = True)
first_model = forms.ChoiceField(widget = forms.MultipleSelect)将其保存在添加函数中后,要在编辑函数中编辑它,请执行以下操作:
def edit(request):
my_model = MyModel.objects.filter(name = 'You Unique Name').get()
first_model = my_model.first_model.all()
my_form = MyForm(initial = {'first_model': first_model})就这样:D
发布于 2013-04-05 01:54:29
也有同样的问题,是由commit=False引起的。修复它的方法是使用save_m2m()。
# Create a form instance with POST data.
f = AuthorForm(request.POST)
# Create, but don't save the new author instance.
new_author = f.save(commit=False)
# Modify the author in some way.
new_author.some_field = 'some_value'
# Save the new instance.
new_author.save()
# Now, save the many-to-many data for the form.
f.save_m2m()https://stackoverflow.com/questions/7316476
复制相似问题