【发布时间】:2011-12-05 07:56:00
【问题描述】:
我有一个名为Module 的静态对象。 Module 对象的属性之一是'name'。我有一个名为Section 的数据库表,它将模块键保存在一个列中。
我想从该表中获取对象并按与它们相关的模块的名称进行排序。
大多数时候,当我引用 Module 对象时,它是这样的: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'
更新:这是模块对象:
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])
【问题讨论】:
-
@DrTyrsa - 我想从该表中获取对象并按与它们相关的模块的名称进行排序。但是这两种方法给了我错误。
-
module字段只是一个字符串。您需要以某种方式检索您的对象。当然你不能在数据库级别做到这一点。 -
@DrTyrsa 所以看来我需要从数据库中获取它们,然后按 module_object 的属性进行排序。这就是我不知道该怎么做。
-
您要完成什么任务?为什么你需要使用一些对象而不是普通的 Django 模型。对象的目的是什么?它有什么接口?
标签: python django sorting django-queryset