【发布时间】:2011-10-24 11:48:11
【问题描述】:
我无法让 ModelMultipleChoiceField 显示模型实例的初始值。我找不到任何关于该领域的文档,而且我一直在阅读的示例太混乱了。 Django: ModelMultipleChoiceField doesn't select initial choices 似乎很相似,但那里给出的解决方案对模型实例来说不是动态的。
这是我的情况(每个数据库用户都连接到一个或多个项目):
models.py
from django.contrib.auth.models import User
class Project(Model):
users = ManyToManyField(User, related_name='projects', blank=True)
forms.py
from django.contrib.admin.widgets import FilteredSelectMultiple
class AssignProjectForm(ModelForm):
class Meta:
model = User
fields = ('projects',)
projects = ModelMultipleChoiceField(
queryset=Project.objects.all(),
required=False,
widget=FilteredSelectMultiple('projects', False),
)
views.py
def assign(request):
if request.method == 'POST':
form = AssignProjectForm(request.POST, instance=request.user)
if form.is_valid():
form.save()
return HttpResponseRedirect('/index/')
else:
form = AssignProjectForm(instance=request.user)
return render_to_response('assign.html', {'form': form})
它返回的表单没有选择实例的链接项目(它看起来像:Django multi-select widget?)。此外,它不会使用保存表单时所做的任何选择来更新用户。
编辑:设法使用此处的方法解决此问题:http://code-blasphemies.blogspot.com/2009/04/dynamically-created-modelmultiplechoice.html
【问题讨论】:
标签: python django django-models