我正在尝试创建一个视图,用户从下拉菜单中选择一个选项,提交它,然后返回一些数据。具体来说,他们将从数据库中的模型中进行选择,并返回该类的所有实例。我使用django-tables2输出数据,以便它可以排序,但这是我的观点。
Views.py
def output_form(request):
results = None
if request.GET.get('browse'):
selection = request.GET.get('browse')
class ModelTable(tables.Table):
class Meta:
model = selection
results = ModelTable(selection.objects.all())
RequestConfig(request, paginate={"per_page": 3}).configure(results)
return render(request, 'projectdb/output.html', {
'results': results,
})
HTML
<form method="GET">
<select name="browse">
<option>Model1</option>
<option>Model2</option>
</select>
<input type="submit" value="Submit" />
</form><br/><br/>
{% if results != None %}
{% render_table results %}
{% endif %}
抛出的错误与标题中一样:
'unicode'对象没有属性'_meta'
我尝试将'selection'unicode转换为字符串,这会引发基本相同的错误(str没有属性_meta)。
我将非常感谢任何帮助。
编辑:为了清楚起见,我想要实现的目标:
用户从下拉列表中选择模型---&gt;选择的模型以某种方式传递给表---&gt;表被实例化并返回到下拉列表下方的页面,其中包含来自所选模型的数据
答案 0 :(得分:1)
model
属性应该引用django模型类。
但在函数output_form
中,selection
引用了request.GET.get('browse')
:str
对象。
class ModelTable(tables.Table):
class Meta:
model = selection # <----
更改model
属性以正确引用模型类。
BTW,从视图函数中提取ModelTable
类定义。
答案 1 :(得分:0)
也许您想要的是将selection
从字符串转换为模型类。为此,请使用django.db.models.get_model
功能,例如:
selected_model = get_model('myapp',选择)
恕我直言,动态定义你的表类并不会影响可读性。