【问题标题】:Editing model ForeignKey as inline in Django administration?在 Django 管理中将模型 ForeignKey 编辑为内联?
【发布时间】:2016-05-16 20:35:21
【问题描述】:

假设我们有以下 Django 示例模型:

class A(models.Model):
    title = model.CharField(max_length=64)
    b = models.ForeignKey(B, blank=True, null=True)


class B(models.Model):
    name = models.CharField(max_length=64)
    age = models.IntegerField()

在 Django 管理中,字段 A.b 将表示为一个下拉小部件,其中包含用于添加、编辑和删除新的 B 实例的控件。

我想显示B 模型,类似于显示内联的方式。然而,为了显示内联,我们需要一个从B.aA 的外键关系。而且我不想介绍这种关系。

是否可以在A 模型管理页面中将B 表示为内联?

【问题讨论】:

  • A 只能外键到 B 中的 1 个,那么为什么需要内联呢?
  • 是的,只有一个。我需要一个内联,因为它在图形上更具吸引力。

标签: python django django-models django-forms django-admin


【解决方案1】:

如果你想知道哪个 B 模型链接到具体的 A 模型(反向查询),你可以这样做:

b = B.objects.get(id=any_id)
a = b.a_set.all()

然后你就可以随心所欲地管理它了。

【讨论】:

  • 是的,就模型而言,我知道如何访问相关对象。我的问题与管理界面更相关。
【解决方案2】:

看看这个工具 - https://djangosnippets.org/snippets/2032/

为此实现“反向内联”的模块 用例。

【讨论】: