2016-12-14 2 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] 
Смежные вопросы