python - 在 HttpResponse 结果中列出外键对象字段
问题描述
我提前道歉,因为我确信这个问题已经得到了完整的回答,但我一定错过了一个关键部分。
我正在尝试在现有结果中列出报告的 created_by 用户的 first_name 字段。据我所知,我已经正确设置了所有内容,但只有 Report 对象的属性正在呈现。
在models.py中,我有一个带有 FK 到“用户”对象的对象“报告”:
created_by = models.ForeignKey(User, related_name='users', on_delete=models.CASCADE)
在views.py中,我正在使用以下方法创建“报告”对象:
reports = Report.objects.order_by('-created_on').select_related('created_by').all()
在 django shell 中运行它会显示我期望的 SQL,包括从 auth_user.first_name 中提取的 first_name 字段:
>>> print(Report.objects.order_by('-created_on').select_related('created_by').all().query)
SELECT "report"."id", "report"."name", "report"."created_on", "report"."created_by_id", "report"."data_source", "report"."report_date", "report"."case_id", "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "report" INNER JOIN "auth_user" ON ("report"."created_by_id" = "auth_user"."id") ORDER BY "report"."created_on" DESC
但是,我必须在我的 HTML 中做错了什么:
{% for report in reports %}
<tr>
<td>{{ report.name }}</td>
<td>{{ report.users.first_name }}</td>
<td>{{ report.report_date }}</td>
</tr>
{% endfor %}
我尝试了几乎所有我能想到的 report.*.first_name 变体,但在每种情况下,只有 report.name 和 report.report_date 值通过。我一定遗漏了一些东西,因为即使当我通过 django shell 打印 SQL 时,它也会显示 auth_user 字段,如果我只是从该命令中请求 .values() ,那么只会返回报告字段。
解决方案
推荐阅读
- android - 使用flutter_flavorizr的flutter变体风格 - 如何自定义应用程序图标(android和IOS)?
- javascript - 指南针角度/旋转角度用于在 Javascript 中跟踪方向到 X、Y 位置
- bash - 用于获取用户输入并 grep 文件以获取另一个文件的内容的 Bash 脚本
- java - Lucene 8.5.1 中 IndexReader.getTermVector(int docID ,String field) 中的 docID 是什么,它是如何工作的?
- c - 使用 Windows 在 Python 中编译和执行 C 程序
- cplex - How to use the random function in cplex
- containerd - 无法使用我的容器从 jfrog 工件中提取一些图像
- c++ - OpenGL Hello Triangle 错误
- c - 这些例子正确吗?
- c# - csv文件保存在软件文件夹csvhelper c#中