我真的是菜鸟。
我想做的是使用来自ModelForm的输入(要显示的类别)并将其传递给另一个函数,该函数将在下一页相应地呈现一个表。
这是我views.py的第一个功能
def index(request):
form1 = PrimarySearchForm(request.POST)
if form1.is_valid():
return results(request, form1.cleaned_data['actor'])
template = 'main/index.html'
context = {'form1': form1}
return render(request, template, context)
这是views.py中的第二个功能
def results(request, actor):
table = FactTable(Sawn_Areas_Fact.objects.get(actors=actor))
RequestConfig(request).configure(table)
return render(request, 'main/results.html', {'table': table})
这是表格 class PrimarySearchForm(forms.ModelForm):
class Meta:
model = Actors_Dim
fields = ('actor',)
因此,当我运行服务器时,选择一个条目并单击“提交”,我将收到以下错误消息:
TypeError: results() missing 1 required positional argument: 'actor'
[29/Jul/2018 17:10:04] "POST /results/ HTTP/1.1" 500 59914
在此先感谢您的帮助!
答案 0 :(得分:1)
您的代码没有按照您的要求进行。日志显示您的表单根本没有发布到索引视图;它正在发布到结果视图。当然是因为这就是您在模板中的form标记的action属性中添加的内容。
实际上,您不应同时执行任何一项操作;您应该发布索引,但是在表单有效时,然后重定向到结果。
答案 1 :(得分:0)
ModelForm
中是否需要actor字段? form1.cleaned_data['actor']
返回一个空字符串,这就是您收到此错误的原因。进行打印声明,然后检查form1.cleaned_data ['actor']是否按预期返回字符串。