その質問はこれに似ているかもしれませんが、そうではありません...
私は次のようなモデル構造を持っています:
class Customer(models.Model):
....
class CustomerCompany(models.Model):
customer = models.ForeignKey(Customer)
type = models.SmallIntegerField(....)
私はを使用しInlineModels
ており、2つのタイプがありCustomerCompany.type
ます。CustomerCompany
だから私はとオーバーライドのために2つの異なるインラインを定義します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()
sender
私の信号は同じになるので、信号を使用することも解決策ではありません。そのため、どの信号を送信し、何Model
を送信する必要があるかを検出できません...InlineModelAdmin
type
type
保存する前にフィールドを設定する方法はありますか?