如何在Django中获取rawqueryset的字段名称

时间:2014-11-02 09:31:56

标签: django django-templates django-queryset

我有一个" rawqueryset"对象,其字段可以根据某些业务规则而变化。如何在相应的模板中访问其计数和字段名称?

View.py

objs=MyModel.objects.raw(sql)
return list(objs)

template.py

{%for obj in objs%}
    {{obj.?}}  
    {{obj.?}}  
    .
    ? 
{%endfor%}

2 个答案:

答案 0 :(得分:1)

我使用两个过滤器解决了这个问题:

template.py:

{% load my_tags %}

{%for obj in objs%}
    {%for key in obj|get_dict %}
        {% with d=obj|get_dict  %}
            {{key}} - {{ d|get_val:key }}
        {% endwith %}
    {%endfor%}
{%endfor%}

my_tags.py:

@register.filter(name='get_dict')
def get_dict(v):
    return v.__dict__   

@register.filter(name='get_val')
def get_val(value, arg):
    return value[arg]

答案 1 :(得分:0)

一定要诚实,我不确定RawQuerySet的属性。如果这是正常的QuerySet,我会试试这个。

{% for obj in objs.values %}
    {% for key, val in values.items %}
        {{ key }}: {{ val }}
    {% endfor %}
{% endfor %}

这样做可以吗?