Django,在管理员中显示和编辑反向外键关系

Posted

技术标签:

【中文标题】Django,在管理员中显示和编辑反向外键关系【英文标题】:Django, Displaying and editing reverse foreign-key relationships in admin 【发布时间】:2013-10-23 05:27:45 【问题描述】:

我正在制作一个网页游戏,其中每个世界都可以成为一个联盟的一部分。

class World(models.Model):
    # rest of Model
    alliance = models.ForeignKey('Alliance', related_name='allmember', default=None, blank=True, null=True)
    officer = models.NullBooleanField()
    leader = models.NullBooleanField()

class Alliance(models.Model):
    allianceid = models.AutoField(primary_key=True)
    alliance_name = models.CharField(max_length=20, unique=True)
    alliance_desc = models.TextField(max_length=200)

我收集到使用内联,我可以在联盟页面上显示联盟的成员。但是,我只能编辑官员和领导状态,而我也希望能够编辑成员身份。这是我正在使用的内联。

class MemberInline(admin.TabularInline):
    model = World
    fk_name = 'alliance'
    # excludes

class AllianceAdmin(admin.ModelAdmin):
    inlines = [
        MemberInline,
    ]

我想我真正想问的是我是否可以从目标模型而不是发起者编辑管理站点中的外键关系。

【问题讨论】:

什么会员资格? 我希望能够从联盟页面编辑一个世界是否在联盟中。 但是您已经可以这样做了 - 世界管理员表单上会自动出现alliance 的下拉菜单。 没错,但就像我说的,我希望能够从 Alliance 管理表单中编辑它。毕竟,如果我正在管理一个联盟的成员,我可以从联盟表格中执行此操作,而不是必须转到每个单独的成员表格。 @heidi 也许这有帮助***.com/a/42374899/767834 【参考方案1】:

这是一个很老的帖子,但很适合参考。这应该工作! 您是否将 AllianceAdmin 传递给注册功能?

admin.site.register(Alliance, AllianceAdmin)

【讨论】:

以上是关于Django,在管理员中显示和编辑反向外键关系的主要内容,如果未能解决你的问题,请参考以下文章

通过 Django Admin 中的内联显示编辑/添加外键对象

Django 表单 - 就地编辑来自反向外键连接的数据

Django,从反向外键查询添加数据(外键加入过滤器)

如何在 Django 管理页面中显示外键的属性

django 管理列表中的外键显示

如何在 1:m 关系中设置默认值,Django 中 user_auth_model 的外键