Django - 管理相关模型编辑

Django - admin related model editing

我正在努力解决一些问题,希望得到您的帮助

有 2 个模型:

def BigBox(models.Model):
    title = textfield
    date = datetimefield
    author = foreignkey(user)
    # other fields etc.

def SmallBox(models.Model):
    title = textfield
    contained_in = foreignkey(BigBox)
    # little box that can be only in big box

我有办法在 BigBox adminModel 的 readonly_fields 中查看 SmallBox,但此时无法编辑或创建新的。


我需要做的(下面写的都适用于admin.ModelAdmin):

当你edit/creatingBigBox时,需要能够在里面创建新的相关SmallBoxes。

这意味着每个 BigBox 总是包含至少一个 SmallBox,并且每个 SmallBox 总是在任何一个 BigBox 中。

需要指定在 BigBox 中创建 SmallBox 的方法。

我认为实现此目的的最佳方法是使用 信号

post_save() 信号要具体。 在声明两个模型 类 之后,定义一个方法来检查 BigBox 集是否包含 SmallBox 实例。如果不是,则创建 SmallBox 的实例并附加到 BigBox 实例。

参考:https://docs.djangoproject.com/en/dev/ref/signals/#post-save

示例:https://simpleisbetterthancomplex.com/tutorial/2016/07/28/how-to-create-django-signals.html

以上示例显示了如何使用 post_save.connect() 或使用 @receiver(post_save, sender=BigBox) 函数装饰器

我通过更好的搜索找到了解决方案。

这叫做'inlines' https://docs.djangoproject.com/en/2.0/intro/tutorial07/#adding-related-objects