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]
我想检查一个模型字段是否被继承,类似于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]