Django:在管理員的 save_model 中獲取所有內聯對象

謝萊什

我有兩個相關的(通過 foreignKey 關係)模型,並為帶有內聯的父級創建了管理模型。在某個用例中,我需要獲取所有相關模型並使用它們來更新父模型的 1 個特定字段。什麼是有效的方法?

我的模型:

class ParentModel(BaseModel):
    text = models.CharField() # This is generated from inline children's data
    ...

class ChildModel(BaseModel):
    parent = models.ForeignKey(ParentModel, on_delete=models.RESTRICT)
    ...

class ChildModelInline(TabularInline):
    model = ChildModel

class ParentModelAdmin(admin.ModelAdmin):
    inlines = [ChildModelInline]
    ...

我想要的是類似於這樣的東西:

class ParentModelAdmin(admin.ModelAdmin):
    inlines = [ChildModelInline]
    ...

    def save_model(self, request, obj, form, change):
        inline_objects = <get_all_inline_objects>
        obj.text = <generate_text(inline_objects)>

        super(ParentModelAdmin, self).save_model(request, obj, form, change)
托尼奧

save_model方法在保存相關對象之前執行。這很明顯,因為相關對象必須引用模型的主鍵。

您可能正在尋找save_related方法。


class ParentModelAdmin(admin.ModelAdmin):

    def save_related(self, request, form, formsets, change):
        super(ParentModelAdmin, self).save_related(self, request, form, formsets, change):
        # form.instance stores the saved object
        form.instance.text = ...
        form.instance.save() 


本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

save_model中的Django相关对象

如何在Django管理表单save_model中获取字段值

如何在 Django admin 中通过 save_model 发送 Firebase 通知

Django在保存到save_model后获取对象

獲取今天日期的所有對象,django

如何在 Django 中獲取超過一天的所有對象?

Keras:save_model是否真的保存了所有优化程序权重?

测试在save_model中使用request.user的Django模型

Django Admin使用save_model()对已更改(或保存)的某些字段的值进行加密

在ModelAdmin中,当覆盖`save_model()`时如何获取对象的先前值

在 Django 中獲取 IntegerChoices 對象的值?

如何從 django 模型中獲取對象的 ID?

如何通過 Django 管理員的 list_display 跳轉到相關的模型對象?

為什麼我無法在 DJANGO 中獲取預取的相關對象?

Django - 選擇列表中的所有模型對象

如何从save_model创建tflite文件(SSD MobileNet)

如何編寫 Django 查詢以獲取鏈接到另一個對象的不同對象?

使用按鈕 django 從模型中刪除特定值的所有對象

如何在 Django 中使用其他模型獲取模型對象

覆盖save_model方法时如何防止“成功更改”消息

无法使用数据库路由器使用save_model保存

使用TF 2.0将save_model转换为TFLite模型

加载save_model导致收集操作“无法编译片段着色器”

django 管理表單無法內聯工作

獲取對象的值而不是它在內存中的位置

是否可以使用聯合成員作為對象存儲?

如何獲取數組中的所有唯一對象(具有兩個值)?

如何從 Django 的 for 循環中獲取所有用戶輸入

使用 django 獲取所有 LDAP 用戶