我有兴趣学习如何显示来自不同模型的查询集列表的所有属性。
这是一个例子:
models.py
class MyModelA(models.Model):
attr1 = something
attr2 = something
class MyModelB(models.Model):
attr3 = something
attr4 = something
class MyModelC(models.Model):
attr5 = something
attr6 = something
views.py
假设我们有三个存储在列表中的模型实例:
all_selected_queries = [mymodela, mymodelb, mymodelc]
对于列表中的每个查询集,我想在模板中显示所有模型字段标题和数据。
我的方法:
# Loop through the list and get the verbose name title of each field ("titel")
for z in all_selected_queries:
queryset_fields = z._meta.get_fields()
for f in queryset_fields:
titel = f.verbose_name.title()
return titel
我面临的挑战是如何在不包含实际属性名称的情况下获取字段的值(因为每个查询集的字段名称不同)。
因此,无需明确调用
f.attr1, f.attr2, f.attr3, f.attr4, f.attr5
对于每个领域,我想遇到一个跨模型边界的解决方案。
非常感谢您的帮助!
答案 0 :(得分:0)
您可以尝试这样:
v_list = list()
for z in all_selected_queries:
queryset_fields = z._meta.get_fields()
values = dict()
for f in queryset_fields:
values[f.verbose_name.title()] = getattr(z, f.attname)
v_list.append(values)
return render(request,'some_template.html',{'values':v_list})
并在模板中显示它们:
{% for value in values %}
{% for key, val in value.items %}
<b>{{ key }}: </b>{{ val }}
{% endfor %}
{% endfor %}