Django - 父级Admin的save_model()内访问更改的InlineAdmin字段

2024-10-02 02:36:18 发布

您现在位置:Python中文网/ 问答频道 /正文

如果这个问题以前已经解决过,请道歉。因为我找不到一个合适的解决办法,我不得不问。 当父管理员的save\u model()中的模型内联管理字段发生更改时,我需要执行一个操作(一个API调用,告诉我的客户从他们的终端更新模型)。你知道吗

型号.py

class Student(models.Model)
    name = CharField()
    age = DateField()

class Marks(models.Model)
    student = ForeignKey(Student)
    subject = CharField()
    marks = IntegerField()

管理员.py

class MarksInline(admin.TabularInline):
    model = Marks
    form = MarksForm
    formset = MarksInlineFormSet

class StudentAdmin(admin.ModelAdmin):
    form = StudentForm
    inlines = [MarksInline, ]

我可以通过检查StudentAdminsave_model()内的form.changed_dataMarksInline模型MarksInlineFormSetclean()方法来实现这一点。问题是,我的操作将从这些方法中的每一个单独调用,从而产生两个调用,即使我只需要一个调用来更新客户端的StudentMarks模型。你知道吗

如果StudentAdminsave_model()也可以返回通过MarksInline中的form.changed_data更改的字段,我的问题就解决了。你知道吗

也尝试通过实现Field Tracker来使用post_save信号。但这也会向receiver函数发出单独的post_save信号调用。你知道吗

有没有人知道一个变通方法,我可以用它从parent Adminssave_model()方法中找出InlineAdmin字段的更改字段。你知道吗


Tags: 方法py模型formmodeladminmodelssave

热门问题