我有一个名为Module
的静态对象。 Module对象的其中一个属性是'name'
。我有一个名为Section
的数据库表,它将模块密钥保存在列中。按照Django/Python中的相关对象属性排序
我想从该表中获取对象并按照它们相关的模块的名称进行排序。
大多数时候,当我引用模块对象,它是这样的:section.module.module_object.name
的模型是:
class Section(models.Model):
page = models.ForeignKey(Page)
module = models.CharField(db_index=True, max_length=50, choices=[(k, '%s %s' % (s.service, s.name)) for k, s in MODULES.iteritems()])
我已经试过这样:
navigation_links = sorted(navigation_links.values(), key=lambda m: m['module'].module_object.name)
但我得到错误AttributeError: 'unicode' object has no attribute 'module_object'
U PDATE:这里是模块对象:
class Module(object):
def __init__(self, key, name):
self.key = key
self.name = name
# ... list of a lot of ALL_MODULES
#dict of the above list
MODULES = dict([(s.key, s) for s in ALL_MODULES])
@DTTyrsa - 我想从该表中获取对象并按照它们相关的模块的名称进行排序。但是,这两种方法给我错误。 – Brenden
'module'字段只是一个字符串。你需要以某种方式检索你的对象。当然,你不能在数据库层面上做到这一点。 – DrTyrsa
@DTTyrsa所以看来我需要从数据库中抓取它们,然后按照module_object的属性进行排序。这就是我不知道该怎么做的。 – Brenden