python - Django - 管理相关模型编辑
问题描述
我正在尝试解决一些问题,希望能得到您的帮助
有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 中查看 SmallBoxes,但此时无法编辑或创建新的。
我需要做(下面写的所有内容都适用于 admin.ModelAdmin):
当您编辑/创建 BigBox 时,需要能够在里面创建新的相关 SmallBoxes。
这意味着每个 BigBox 总是包含至少一个 SmallBox 并且每个 SmallBox 总是在任何 BigBox 中。
需要指定在 BigBox 中创建 SmallBoxes 的方式。
解决方案
我认为实现这一目标的最佳方法是使用信号。
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)装饰器来定义函数并附加到模型
推荐阅读
- php - 在从输入框中清除输入后,Laravel Ajax 搜索将整个集合作为对查询的响应
- reporting-services - SSSR 参数在预览模式下改变位置
- python - 多个产品的 Python Prophet 需求预测:将所有预测保存到单个数据框中
- javascript - 如何创建一个循环来询问存储在对象数组中的问题,并创建带有答案的按钮?
- python - 如何在 Python 脚本上使用 setuid 位?
- c++ - 这个“/string”文件是什么 CMake 失败了?
- sql-server - 如何将 mdf 文件导入 Azure Data Studio
- selenium - 无法在 intellij 中打开日志文件
- tfs - 与 Internet 断开连接时将 Visual Studio 2019 连接到 TFS 2010 时出现问题
- excel - Excel数据透视表日期分组问题