迭代Django模型属性

时间:2015-08-01 10:51:27

标签: django python-2.7 django-models django-1.7 django-1.8

我有一个像这样定义的类:

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

它有什么问题?

1 个答案:

答案 0 :(得分:1)

问题出在opts.virtual_fields类型中。现在是list。我猜它在1.8

中有所改变

要解决它:

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