Приносим свои извинения, если этот вопрос уже был решен ранее.Так как я не смог найти правильного решения для этого, пришлось спросить.Мне нужно выполнить действие (вызов API, сообщающий моим клиентам обновить модели с их конца), когда происходит изменение в полях Inline Admin модели изнутри save_model () родительского администратора.
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()
.Проблема в том, что мое действие будет вызываться отдельно от каждого из этих методов, что приведет к двум вызовам, хотя все, что мне нужно, - это один вызов для обновления модели Student
и Marks
в клиентской части.
Моя проблема была бы решена, если бы save_model()
из StudentAdmin
мог вернуть поля, которые также были изменены с помощью form.changed_data
в MarksInline
.
Попытался также использовать сигналы post_save
, внедрив Field Tracker .Но это также отсылало отдельные post_save
сигнальные вызовы функции получателя.
Кто-нибудь знает обходной путь, используя который я могу выяснить измененные поля полей InlineAdmin из родительского метода Admins save_model()
.