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

Django, detect if model field is inherited

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

我有一个继承自 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']

但我希望它 return:

['id', 'name']

已使用评论中建议的解决方案解决:

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]