【问题标题】:Iterating over Django model attributes迭代 Django 模型属性
【发布时间】:2015-10-24 00:12:34
【问题描述】:

我有一个这样定义的类:

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

它可能有什么问题?

【问题讨论】:

  • 问题是有些属性是元组,有些是列表。

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


【解决方案1】:

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

解决它:

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

【讨论】:

    猜你喜欢
    • 2010-11-13
    • 1970-01-01
    • 2021-03-06
    • 2021-12-09
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 2018-02-24
    • 2012-12-15
    相关资源
    最近更新 更多