Folks - 这里的第一次提问者,虽然我多年来一直依赖Stackoverflow作为参考工具。任何和所有反馈都赞赏。这是我的问题:
我正在构建一个Django应用程序,它通过ModelForm获取数据,将其保存到底层模型,然后根据更新的模型运行数据库操作。
当我的ModelForm由CharField组成时,这似乎正常。但是,一旦我将表单字段更改为ModelChoiceField,以便从下拉列表中选择页面上的输入,看起来数据在提交时不再保存到数据库。运行应用程序不会启动任何错误代码,我已通过使用dbshell直接查询数据库确认下面代码中引用的Menu表实际上是空的。
有什么想法?我已经对现有问题进行了非常强大的搜索(虽然可能有人可能证明我错了)并且找不到与此问题直接相关的任何内容。相关的代码段如下:
forms.py
class MenuForm(forms.ModelForm):
recipe_name = forms.ModelChoiceField(label='Recipe', empty_label = 'Choose from the dropdown', queryset = Recipes.objects.values_list('recipe_name', flat = 'True').order_by('recipe_name'))
class Meta:
model = Menu
fields = ('recipe_name',)
views.py
def set_menu(request):
Menu.objects.all().delete()
MenuFormSet = modelformset_factory(Menu, form = MenuForm, extra = 7)
context = RequestContext(request)
if request.method == 'POST':
formset = MenuFormSet(request.POST)
if formset.is_valid():
formset.save()
return populate_grocerylist(request)
else:
message = "Something went wrong"
return render_to_response('menu.html', {'message': message}, context)
else:
formset = MenuFormSet()
return render_to_response('menu.html', {'formset': MenuFormSet()}, context)