2016-12-14 4 views
0

モデルフィールドが継承されているかどうかを確認したいと思います。Field.is_relationと似ています。伝える方法はありますか?Django、モデルフィールドが継承されているかどうかを検出

私はMPTTModelから継承するモデルを持っていますが、モデルに直接定義されている属性のリストを希望しますが、MPTTModelでは定義しません。

例:

# models.py 
class ACoolModel(MPTTModel): 
    name = CharField(max_length=128) 

その後、のようなもの:

[f.attname for f in ACoolModel._meta.get_fields(False)] 

も同様MPTTModelからフィールドをバック与える:

['id', 'name', 'lft', 'rght', 'tree_id', 'level'] 

しかし、私はそれを返すようにしたい:

ソリューションを使用して解決
+0

、あなたは 'MPTTModel'ため、その後' ACoolModel'との属性のリストを取得することができます。そして、2番目のリストから最初のリストを引く。あなたは属性の違いがあります。 –

答えて

0

はコメントで提案:オプションとして

all_fields = [f.attname for f in ACoolModel._meta.get_fields(False)] 
inherited_fields = [f.attname for f in MPTTModel._meta.get_fields(False)] 
non_inherited_fields = [field for field in all_fields if field not in inherited_fields] 
関連する問題