Django,检测模型字段是否被继承

时间:2016-12-14 00:53:01

标签: django database inheritance django-mptt

我想检查是否继承了模型字段,类似于Field.is_relation。有办法告诉吗?

我有一个继承自MPTTModel的模型,我想要一个直接在模型中定义但不在MPTTModel中定义的属性列表。

E.g:

# 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']

1 个答案:

答案 0 :(得分: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]