将表单字段从CharField更改为ModelChoiceField后,为什么我的modelform不会保存到数据库?

时间:2015-08-29 12:32:59

标签: python django django-forms

Folks - 这里的第一次提问者,虽然我多年来一直依赖Stackoverflow作为参考工具。任何和所有反馈都赞赏。这是我的问题:

我正在构建一个Django应用程序,它通过ModelForm获取数据,将其保存到底层模型,然后根据更新的模型运行数据库操作。

当我的ModelForm由CharField组成时,这似乎正常。但是,一旦我将表单字段更改为ModelChoiceField,以便从下拉列表中选择页面上的输入,看起来数据在提交时不再保存到数据库。运行应用程序不会启动任何错误代码,我已通过使用dbshel​​l直接查询数据库确认下面代码中引用的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)

0 个答案:

没有答案