Django-访问父级管理员的save_model()中已更改的InlineAdmin字段

时间:2018-12-26 13:07:29

标签: python django django-admin

对这个问题之前是否已经解决表示歉意。由于我无法为此找到合适的解决方案,因此不得不提出要求。 当父管理员的save_model()中的模型的“内联管理”字段发生更改时,我需要执行一个操作(一个API调用,告诉我的客户端从其末端更新模型)。

models.py

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

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

admin.py

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

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

我可以通过在form.changed_data StudentAdmin内部以及save_model()模型MarksInline MarksInlineFormSet方法中检查clean() 。问题是,即使我只需要一次调用来更新客户端中的StudentMarks模型,我的操作就会与上述每种方法分开调用,从而导致两次调用。 >

如果save_model()的{​​{1}}也可以返回通过StudentAdmin中的form.changed_data更改过的字段,那么我的问题将得到解决。

通过实现Field Tracker,也尝试使用MarksInline信号。但这也向接收器函数发出了单独的post_save信号调用。

没有人知道一种解决方法,我可以从父Admins post_save方法中找出InlineAdmin字段的更改字段。

0 个答案:

没有答案