Переопределить сохранение в Django InlineModelAdmin

Этот вопрос может быть похож на этот , но это не так ...

У меня есть структура модели, например:

class Customer(models.Model):
    ....

class CustomerCompany(models.Model):
    customer = models.ForeignKey(Customer)
    type = models.SmallIntegerField(....)

Я использую InlineModels и имею два типа CustomerCampany.type . Итак, я определяю два разных встроенных элемента для CustomerCompany и ov override InlineModelAdmin.queryset

class CustomerAdmin(admin.ModelAdmin):
    inlines=[CustomerCompanyType1Inline, CustomerCompanyType2Inline]


class CustomerCompanyType1Inline(admin.TabularInline):
    model = CustomerCompany
    def queryset(self, request):
        return super(CustomerCompanyType1Inline, self).queryset(request).filter(type=1)

class CustomerCompanyType2Inline(admin.TabularInline):
    model = CustomerCompany
    def queryset(self, request):
        return super(CustomerCompanyType2Inline, self).queryset(request).filter(type=2)

. Здесь все хорошо и хорошо, но для добавления новых записей для InlineModelAdmin , Мне все еще нужно отображать поле type CustomerCompany в AdminForm , поскольку я не могу переопределить метод save для InlineModelAdmin , например:

class CustomerCompanyType2Inline(admin.TabularInline):
    model = CustomerCompany
    def queryset(self, request):
        return super(CustomerCompanyType2Inline, self).queryset(request).filter(type=2)
    #Following override do not work
    def save_model(self, request, obj, form, change):
        obj.type=2
        obj.save()

Использование сигнала также не является решением, поскольку мой отправитель сигнала будет той же Model , поэтому я не могу определить, какой InlineModelAdmin отправить его и какой должен быть тип ...

Есть ли способ, позволяющий мне установить поле type перед сохранением?

15
задан Community 23 May 2017 в 12:18
поделиться