我在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
这真的很奇怪。因为在迭代过滤器的模板中,我只看到了根据表单的过滤集。
答案 0 :(得分:0)
请参阅此帖子:Is it possible to access static files within views.py?,了解如何访问视图中的静态文件。如果Person对象有to_csv
之类的方法,那么最好是恕我直言。
所以你可以为每个对象调用它,然后将其写入csv文件。
但我不确定这是否真的是你想去的方式。
您应该考虑直接从查询返回的对象列表创建图形,因为您已经保存了查询。