仅在变量中添加某些字段 - Python 函数 - Django - 视图

Only Add Certain Fields in Variable - Python Function - Django - Views

我有带 CharFields 'flname1'、'date1' 和 'time1' 的 Django 模型。 我的目标 在我的 HTML 中是有一个 {{ forloop }} 只运行 'date1' 和 'time1' 字段并显示所有字段. 我的问题 是,在我的视图文件中,我找不到创建 python 变量的方法,该变量仅包含一个模型的三个字段中的两个。即尝试了很多,但我试图避免的是...

posts = DocPost.objects.all()

这会将所有三个字段放入一个变量中,并将它们显示在我不想要的 for 循环中。我还尝试了很多使用过滤器的工作,并尝试了互联网上其他人成功但对我不起作用的东西,比如...

posts = DocPost.objects.filter('flname1').only('date1', 'time1')

这没有用,也没有将 date1 和 time1 分开并将它们打包到一个我可以循环访问的变量中。在这一点上,我尝试了比这更多的方法,但没有成功。感谢您的帮助。

您可以通过两种方式仅获取查询中的特定字段并对其进行迭代。两者的模板几乎相同

首先,您可以使用only() to generate a queryset where each object only has certain fields populated and all the rest are deferred

# View
context['posts'] = DocPost.objects.only('date1', 'time1')

# Template
{% for post in posts %}
    {{ post.date1 }}
    {{ post.time1 }}
{% endfor %}

其次,您可以使用values()生成仅包含指定字段的字典查询集

# View
context['posts'] = DocPost.objects.values('date1', 'time1')

# Template
{% for post in posts %}
    {{ post.date1 }}
    {{ post.time1 }}
{% endfor %}