2016-12-14 39 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'] 

但我想它返回:

['id', 'name'] 
+0

作爲一個選項,你可以得到'ACoolModel'屬性列表,然後'MPTTModel'。從第二個減去第一個列表。你會有不同的屬性。 –

回答

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]