django - 如何在 django-simple-history 的 history_list_display 中引用外键?
问题描述
我已将 HistoricalRecords 添加到 django 中的模型中。
我能够使用history_list_display
属性在管理面板的历史记录页面中显示列。
在这些列中,我有可以employee
在history_list_display
属性元组中显示的员工。但是当我尝试对employee__person__person_name
其他表进行 ForeignKey 引用时,它显示的是None
.
如何在 django admin 的历史记录页面中显示 ForeignKey 参考值?
解决方案
保存对象的历史版本时django-simple-history
,它通过删除对其外键的任何外键约束来实现(这样当您删除历史记录指向的对象时,历史记录不受影响)。做django-simple-history
处理外键的方式,你不能做你通常可以在 django admin 中做的双下划线查询类型。相反,您可以自己查询对象,如下所示:
@register(Employee)
class EmployeeAdmin(SimpleHistoryAdmin):
list_display = [...]
history_list_display = ["get_employee_name", "get_employee_manager_name"]
def get_employee_name(self, obj):
obj.person.name
def get_employee_manager_name(self, obj):
return Employee.objects.filter(pk=obj.employee.id).first().manager.person.person_name
推荐阅读
- vue.js - fontawesome 5 在 vue js 应用程序中找不到一个或多个图标
- jquery - 应该支持所有视频格式的jQuery视频播放器
- javascript - 将 img 移动到断点上的不同引导 col
- excel - 当 Excel 关闭然后重新打开时,ActiveX 命令按钮停止工作
- java - 关于 double 和 bigdecimal 精度问题
- asp.net-core - 在 ASP.NET Core 2.2 中使用 Auth0 身份验证再次运行 Web api 集成测试
- python - 我想找到如何对范围内随机生成的数字使用 if 语句
- django - 在单个模板中编写 django 多个视图
- ios - 以编程方式将数据源分配给 UITableView 而不调用数据源方法
- android - 如何在协调器布局中将片段约束到应用栏