Django-与管理员相关的模型编辑

时间:2018-06-21 14:59:09

标签: python django django-admin django-orm

我正在尝试解决问题,希望对您有所帮助

有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):

编辑/创建BigBox时,需要能够在内部创建新的相关SmallBox。

这意味着每个BigBox始终至少包含一个SmallBox,并且每个SmallBox始终包含任何SmallBox。

需要指定在BigBox内部创建SmallBox的方式。

2 个答案:

答案 0 :(得分:0)

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

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)装饰器来定义函数并将其附加到模型在功能上

答案 1 :(得分:0)

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

这称为“内联” https://docs.djangoproject.com/en/2.0/intro/tutorial07/#adding-related-objects