'unicode'对象没有属性'_meta'

时间:2014-03-04 03:06:59

标签: python django django-tables2

我正在尝试创建一个视图,用户从下拉菜单中选择一个选项,提交它,然后返回一些数据。具体来说,他们将从数据库中的模型中进行选择,并返回该类的所有实例。我使用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;表被实例化并返回到下拉列表下方的页面,其中包含来自所选模型的数据

2 个答案:

答案 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',选择)

恕我直言,动态定义你的表类并不会影响可读性。