向Django queryset添加字段

时间:2015-03-22 14:50:35

标签: django model django-queryset

我正在开发一个小型项目,其中包含一个充满数据的现有数据库。我们每天都会运行一项任务来获取大量记录并通过电子邮件发送结果。对于我们发送电子邮件的其中一个值,我们需要在现有字段上执行计算(字符串替换)。我们现在使用模型方法执行此操作。但要做到这一点,我们需要迭代查询集中的所有对象。

如何在运行查询时将计算字段添加/扩展到查询集?请注意,这不是模型中的现有字段,我们必须在现有字段上执行一些替换。我可以使用自定义模型管理器吗?如果是这样,你有一个例子吗?

模型方法:

def get_application_dir(self):
    trails = {
        'xxx': '/abc/123',
        'yyy': '/xyz/789',
    }

    app = self.application
    file = self.filename

    if app in trails:
        traillen = len(trails[app])
        if file[-traillen:] == trails[app]:
            return file[:-traillen]

    return file

在视图中使用:

if files:
    result['i'] = []
    for f in files:
        a = {
           'application_name': f.application_name,
           'directory': f.get_application_dir()
           }
        result['i'].append(a)

所以,我不想通过从ORM获取值/字段来执行上面的循环。这可能吗?也许通过创建自定义模型管理器,并扩展查询集?

提前致谢。

0 个答案:

没有答案