django - Django 管理面板未正确显示相关外键 - Postgresql
问题描述
我是 Django 的新手。我已经定义了 2 个表并设置了一个外键。所以我想将表Comment中的列注释链接到表Note中的列id。
当我使用 PostgreSQL 时,当我检查 psql shell 时,列note的名称将显示为note_id。
因此,对于在模板中使用,如果我使用类似的东西comment.note
,它会打印笔记表的“quick_note”,这是我不想要的。我想将相关帖子的“id”获取到当前评论,而不是相关帖子的 quick_note。但是如果我使用类似的东西,它会显示相关帖子的 id,这是我期望得到的。comments.note_id
同样在管理面板中,我看到一个注释字段:显示相关的 quick_note 而不是 id。如何解决管理面板显示相关 ID 的问题?所以在这里我希望相关帖子的 id 显示在note:前面。
这是我的model.py:
class Note(models.Model):
title = models.CharField(max_length=100)
quick_note = models.CharField(max_length=500)
pub_date = models.DateTimeField('date published')
author = models.CharField(max_length=100)
class Comment(models.Model):
text = models.CharField(max_length=200)
note = models.ForeignKey(Note, on_delete=models.CASCADE)
pub_date = models.DateTimeField('date published')
解决方案
这是 Django 的行为,foreignKey 字段指向一个对象,而 field_id 映射到对象的主键,这在分配的情况下很重要,就像您尝试保存一样
comment.note = 1
你会得到一个例外
如果您尝试保存
comment.note_id = note
你也会得到例外。
关于您的管理问题,最好的解决方案是设置“raw_id_fields”,它会按照您的意愿行事,它会让您的系统更快地添加/编辑对象。
class CommentAdmin(admin.ModelAdmin):
raw_id_fields = ['note']
try:
admin.site.unregister(Comment)
except: pass
admin.site.register(Comment,CommentAdmin)
推荐阅读
- javascript - 如何确定页面是由自定义选项卡打开的?
- google-cloud-platform - 在 gcp 中升级/更改虚拟机实例的操作系统版本
- r - 为什么函数“格式”会显示这样的内容?
- hit - 玩家被击中时的“击退”
- mongodb - 自动启动 replSet
- javascript - 数组中的值在useEffect内部和useEffect外部不同,ReactJs
- javascript - TypeScript 中的引用发生了什么?
- xsl-fo - 调整块容器内块的垂直位置
- c# - Nuget 包动态 ConnectionString
- html - index.html 尝试从根 URI 解析 css 文件