2015-08-01 4 views
1

У меня есть класс определяется следующим образом:Перебор модели Django атрибуты

class MyModel(models.Model): 
... 

У меня есть экземпляр этого класса, и я хотел бы перебрать это мета атрибуты:

opts = instance._meta 
for f in opts.many_to_many + opts.concrete_fields + opts.virtual_fields: 
    ... 

Этот код отлично работает с Django 1.7, но не работает с Django 1.8. Ошибка, которую я получаю, представляет собой ошибку типа, и это значение: can only concatenate tuple (not "list") to tuple

В чем проблема?

+0

проблемы является то, что некоторые из атрибутов кортежей и некоторые из них перечислены. – sobolevn

ответ

1

Проблема в модели opts.virtual_fields. Сейчас list. Я предполагаю, что это было изменено в версии 1.8

Чтобы решить эту проблему:

metas = opts.concrete_fields + opts.many_to_many + tuple(opts.virtual_fields) 
+0

Спасибо! Это работает. –

Смежные вопросы