将输出对象从django-filter保存到CSV

时间:2014-05-23 16:55:52

标签: python django csv django-models django-filter

我在Django中有一个简单的模型,我在我的一个页面中使用django-filters来获得一个简单的功能,即通过模型和模型来搜索表单。然后输出模型和属性列表。

我需要帮助的是当我点击“提交”时,如何将在django-filters表单中选择的(模型数据集)保存为CSV。在表格上。我还想添加一个表格框来说明如何命名文件。

models.py

    class Person(..)
         name = models.CharField(..)
         type = models.CharField(choices=TYPECHOICES)
         ...

filters.py

    class PersonFilter(django_filters.FilterSet):
        type = django_filters.MultipleChoiceFilter(name='type', choices=TYPECHOICES)

views.py:

    def query(request):
        f = PersonFilter=request.GET, queryset=Person.objects.all())
        return render_to_response('query.html', {'filter': f})

最后在我的模板中我有:

    {{ filter.form.as_p}}

    {% for obj in filter %}
    {% endfor %}

提出表格&结果

由于

编辑:

当我在视图中执行此操作时,为什么要迭代所有对象而不仅仅是表单指定的集合:

    for obj in f:
        print obj.name

这真的很奇怪。因为在迭代过滤器的模板中,我只看到了根据表单的过滤集。

1 个答案:

答案 0 :(得分:0)

请参阅此帖子:Is it possible to access static files within views.py?,了解如何访问视图中的静态文件。如果Person对象有to_csv之类的方法,那么最好是恕我直言。 所以你可以为每个对象调用它,然后将其写入csv文件。

但我不确定这是否真的是你想去的方式。

您应该考虑直接从查询返回的对象列表创建图形,因为您已经保存了查询。