如何选择要在Django中的通用ListView类中显示的字段?

时间:2014-10-04 14:57:28

标签: python django listview

我正在使用Django(v1.7),我正在寻找一种“Django风格”方式来选择要在generic.ListView中显示的字段。

让我举个例子:

在models.py中:

class Stuff(generic.models):
    field1 = model.CharField()
    field2 = model.CharField()
    field3 = model.CharField()

在views.py中:

class StuffList(generic.ListView)
    model = Stuff

在template / stuff_index.html

{% for stuff in object_list %}
    Field1: {{ stuff.field1 }}
    Field3: {{ stuff.field3 }}
{% endfor %}

有没有办法在views.py中指明要显示的字段?所以views.py和template / stuff_index.html看起来像:

views.py:

class StuffList(generic.ListView)
    model = Stuff
    fields = ['field1','field3']     # Or something similar

在template / stuff_index.html

{% for stuff in object_list %}
    {% for field in stuff %}
        {{ field.name }}: {{ stuff.field }}     <!-- Or something similar -->
    {% endfor %}
{% endfor %}

这种编码方式是否以某种方式由Django框架处理?通过在StuffList类中重新定义 get_queryset()方法的返回值,我成功地做了类似的事情,但它不是一个“智能”解决方案。

1 个答案:

答案 0 :(得分:1)

我认为get_context_data正是您可能正在寻找的。

https://docs.djangoproject.com/en/dev/ref/class-based-views/generic-display/