如何在Django Admin中为相关模型添加快速添加链接
假设有两个类:
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提供了内联功能来处理反向外键。
在用户自定义视图/你的代码中,使用内联模型表单集。
在Django管理后台中,使用InlineModelAdmin,比如StackedInline或TabularInline。
如果你不想让内联表单集从已有对象生成,可以重写你管理内联表单集类的queryset()方法,让它返回类似于:YourModel.objects.none()的内容。
这样,内联表单集就会始终是空的。如果你只想要一个额外的表单,可以设置extra=1。