我正在使用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()方法的返回值,我成功地做了类似的事情,但它不是一个“智能”解决方案。
答案 0 :(得分:1)
我认为get_context_data正是您可能正在寻找的。
https://docs.djangoproject.com/en/dev/ref/class-based-views/generic-display/