Этот вопрос может быть похож на этот , но это не так ...
У меня есть структура модели, например:
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
перед сохранением?