如何在Django Admin中为相关模型添加快速添加链接

0 投票
1 回答
560 浏览
提问于 2025-04-17 12:09

假设有两个类:

class A(models.Model): 
    …

class B(models.Model): 
    a = models.ForeignKey(A) 
    …

为了方便在不记得A的情况下添加B,我该如何在A的修改表单中添加一个链接来添加B呢?

这里有一个解决方案,提到在B的模型中添加一些代码,但我觉得这样的代码不应该放在模型里。

更新:

这个内联有个问题(或者我做的不对):当内联对象的数量超过了max_num属性时,就没有新的空表单可以添加新的对象了。不过,内联对象的数量可能会非常多。

1 个回答

3

模型A有一个反向外键指向模型B,因为模型B有一个外键指向模型A:

  • B().a 是一个外键
  • A().bet_set 是一个反向外键

Django提供了内联功能来处理反向外键

  1. 用户自定义视图/你的代码中,使用内联模型表单集

  2. Django管理后台中,使用InlineModelAdmin,比如StackedInlineTabularInline

如果你不想让内联表单集从已有对象生成,可以重写你管理内联表单集类的queryset()方法,让它返回类似于:YourModel.objects.none()的内容。

这样,内联表单集就会始终是空的。如果你只想要一个额外的表单,可以设置extra=1。

撰写回答