迭代 Django 模型属性
Iterating over Django model attributes
我有一个 class 定义如下:
class MyModel(models.Model):
...
我有这个 class 的一个实例,我想遍历它的元属性:
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
它可能有什么问题?
问题出在 opts.virtual_fields
类型中。现在是 list
。我猜它在 1.8
中被更改了
求解:
metas = opts.concrete_fields + opts.many_to_many + tuple(opts.virtual_fields)
我有一个 class 定义如下:
class MyModel(models.Model):
...
我有这个 class 的一个实例,我想遍历它的元属性:
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
它可能有什么问题?
问题出在 opts.virtual_fields
类型中。现在是 list
。我猜它在 1.8
求解:
metas = opts.concrete_fields + opts.many_to_many + tuple(opts.virtual_fields)