Mysql 有没有一种方法可以遍历Django数据库对象中的所有字段,并通过HTML模板显示它们?
我的模板HTML文件有以下HTML代码:Mysql 有没有一种方法可以遍历Django数据库对象中的所有字段,并通过HTML模板显示它们?,mysql,django,Mysql,Django,我的模板HTML文件有以下HTML代码: name : {{object.name}} age : {{object.age}} gender : {{object.gender}} 姓名、年龄、性别等存储在MySQL数据库中。 我不想列出每一个字段(很多),而是想将代码概括如下: {% for field in object %} {{field.field_name}} : {{field.field_value}} {% endfor %} 我的问题是我有多个表,每个表都有很多字段。
name : {{object.name}}
age : {{object.age}}
gender : {{object.gender}}
姓名、年龄、性别等存储在MySQL数据库中。
我不想列出每一个字段(很多),而是想将代码概括如下:
{% for field in object %}
{{field.field_name}} : {{field.field_value}}
{% endfor %}
我的问题是我有多个表,每个表都有很多字段。我不能概括这张表。如何按照后一段代码中所示的方式概括模板?假设您有: 型号:
class Post(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=150, null=False, blank=False)
body = models.CharField(max_length=150, null=False, blank=False)
{%for p in post%}
-----------------
<br>
{%for k, v in p.items %}
The key: {{ k }} ==> has a value: {{ v }}
<br>
{%endfor%}
-----------------
{%endfor%}
视图:
def index(request):
posts = Post.objects.all().values()
print(posts)
return render(request,'index.html',{'posts':posts})
注意:如果您不在查询集的末尾添加“values()”,您将在html文件中得到一个空白页
模板:
class Post(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=150, null=False, blank=False)
body = models.CharField(max_length=150, null=False, blank=False)
{%for p in post%}
-----------------
<br>
{%for k, v in p.items %}
The key: {{ k }} ==> has a value: {{ v }}
<br>
{%endfor%}
-----------------
{%endfor%}
{post%%中p的%
-----------------
{p.items%中k,v的百分比}
键:{{k}}==>有一个值:{{v}
{%endfor%}
-----------------
{%endfor%}
您迭代每篇文章,然后迭代该文章的所有项目,并提取键和值,依此类推
当然,您需要根据实际数据调整此示例您可以使用模型元API的获取字段方法来检查模型字段: 向模型中添加一个方法,该方法将返回字段名和相应的值。 您可以在模板中循环这些值 例如:我正在使用一个博客模型,您可以根据代码更改模型名称 models.py:
class Blog(models.Model):
title = models.CharField(max_length=200)
image = models.ImageField(null=True, blank=True)
created = models.DateField(auto_now_add=True, null=True)
def get_fields(self):
return [(field.name, getattr(self,field.name)) for field in Blog._meta.fields]
Views.py:
def bloglist(request):
bloglist = Blog.objects.all()
return render(request, 'bloglist.html',{'bloglist':bloglist })
在模板bloglist.html中,您可以编写:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
<body>
<div class="container">
<h1>
Each attribute and value are:
</h1>
<br>
{% for entry in bloglist %}
<br>
{% for name, value in entry.get_fields %}
{% if value %}
{{name}} : {{value}}
<br>
{% endif %}
{% endfor %}
{% endfor %}
</div>
</body>
</html>
每个属性和值都是:
{bloglist%中条目的%s}
{%表示名称,entry.get_字段中的值%}
{%if值%}
{{name}}:{{value}
{%endif%}
{%endfor%}
{%endfor%}
请参考官方文档了解模型_MetaAPI:
尝试
{%for key,value in object.items%}
然后打印key
,value
无效。它显示空白的HTMLT,这将起作用。但是你需要将pk添加到bloglist(请求,pk)@PrajwalDhatwalia:绝对!它可以根据需要进行修改,与此示例相同:)