2012-03-20 11 views
1

私はすべての親フィールドを除外し、子供に明示的に定義されたフィールドだけを含めるという要件があります。簡潔にするためDjango-親クラスのフィールドを除外する方法

、ここに私のDjangoのコードは次のとおりです。

#app2 models.py 
class EmployeeExtended(app1.Employee): 
    boss = models.ForeignKey(User, null=True, blank=True) 

#app1 admin.py 
class EmployeeExtendedInline(admin.StackedInline): 
    model = app2.EmployeeExtended 
    fields = ['boss'] 

class EmployeeAdmin(admin.ModelAdmin): 
    inlines = [EmployeeExtendedInline] 

このコードが機能しています。私がfieldsを与えないと、すべての親フィールドも含まれます。しかし、私は明示的にfields=['boss']と書いてはいけません。あなたは

fields = [f.name for f in app1.EmployeeExtended._meta._fields() if f not in app1.Employee._meta._fields()] 

で逃げることができるかもしれません。しかし、正直に言うとEmployeeExtendedOnly_Not_In_Its_Parent

+0

はapp1.Employeeは抽象モデルか実際のモデルですか? – Meitham

+0

それは本当のモデルです。データベースに独自のテーブルがあります。 EmployeeExtendedにはEmployeeに対して暗黙のfkがあります。 – jerrymouse

答えて

3

ためのコードを示唆してください、これは醜いと私は見ることができない

for field in EmployeeExtendedOnly_Not_In_Its_Parent: 
    fields.append(field) 

:むしろ私のような何かをしたいですなぜEmployeeを拡張したのですか? 2つのモデル間でOneToOneKeyを拡張します。あなたが必要とするのは、ForeignKeyです。

+0

+1、このフィールドの共通部分が役立ちます。それでも、この情報が_metaのどこかで直接入手できるかどうかを知りたいです。 – jerrymouse

関連する問題