Django 管理面板没有正确显示相关的外键 - Postgresql

Django admin panel not showing related foreign key correctly - Postgresql

我是 Django 的新手。我已经定义了 2 tables 并设置了一个外键。所以我想 link note 列从 table Commentid[=] 列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)