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