Django 管理面板没有正确显示相关的外键 - Postgresql
Django admin panel not showing related foreign key correctly - Postgresql
我是 Django 的新手。我已经定义了 2 tables 并设置了一个外键。所以我想 link note 列从 table Comment 到 id[=] 列40=] 来自 table 注.
因为我使用的是 PostgreSQL,当我检查 psql shell 时,列的名称 note 将显示为 note_id.
所以为了在模板中使用,如果我使用类似 comment.note
的东西,它会打印 注释的 ""quick_note" table,我不希望这样。我想获取当前评论的相关 post 的 "id",而不是相关 post 的 quick_note。但是如果我使用 comments.note_id
之类的东西,它会显示相关 post 的 ID,这是我期望得到的。
同样在管理面板中,我看到 note: 字段显示相关 quick_note 而不是 id。我该如何解决管理面板显示相关 ID 的问题?所以这里我想让相关的post的id显示在前面注意:.
这是我的 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”,它会按照您的意愿运行,并且会使您的系统在 adding/editing 个对象中更快。
class CommentAdmin(admin.ModelAdmin):
raw_id_fields = ['note']
try:
admin.site.unregister(Comment)
except: pass
admin.site.register(Comment,CommentAdmin)
我是 Django 的新手。我已经定义了 2 tables 并设置了一个外键。所以我想 link note 列从 table Comment 到 id[=] 列40=] 来自 table 注.
因为我使用的是 PostgreSQL,当我检查 psql shell 时,列的名称 note 将显示为 note_id.
所以为了在模板中使用,如果我使用类似 comment.note
的东西,它会打印 注释的 ""quick_note" table,我不希望这样。我想获取当前评论的相关 post 的 "id",而不是相关 post 的 quick_note。但是如果我使用 comments.note_id
之类的东西,它会显示相关 post 的 ID,这是我期望得到的。
同样在管理面板中,我看到 note: 字段显示相关 quick_note 而不是 id。我该如何解决管理面板显示相关 ID 的问题?所以这里我想让相关的post的id显示在前面注意:.
这是我的 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”,它会按照您的意愿运行,并且会使您的系统在 adding/editing 个对象中更快。
class CommentAdmin(admin.ModelAdmin):
raw_id_fields = ['note']
try:
admin.site.unregister(Comment)
except: pass
admin.site.register(Comment,CommentAdmin)