Mysql 有没有一种方法可以遍历Django数据库对象中的所有字段,并通过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 %} 我的问题是我有多个表,每个表都有很多字段。

我的模板HTML文件有以下HTML代码:

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:绝对!它可以根据需要进行修改,与此示例相同:)