小编alT*_*Tus的帖子

如何聚合(最小/最大等)Django JSONField数据?

我正在使用django 1.9及其内置的JSONField和postgres 9.4.在我的模型的JSONFieldjson字段中,我使用一些值存储对象,包括数字.我需要聚合它们来找到最小/最大值.像这样的东西:

Model.objects.aggregate(min=Min('attrs__my_key'))
Run Code Online (Sandbox Code Playgroud)

提取特定密钥也很有用:

Model.objects.values_list('attrs__my_key', flat=True)
Run Code Online (Sandbox Code Playgroud)

上述查询失败attrs:"无法将关键字'my_key'解析为字段.不允许加入'attrs'."

有可能吗?

注意:1)我知道如何进行简单的postgres查询来完成这项工作,所以我专门搜索ORM解决方案,以便能够过滤等.2)我想这可以用(相对)新的查询表达式/查找api完成但是我还没有研究过它.

django orm json

26
推荐指数
4
解决办法
5965
查看次数

如何手动发送 django 异常日志?

我的应用程序中有一个特定的视图,HttpResponse('')如果一切都成功完成并且像HttpResponseBadRequest()其他情况一样,它应该返回。

此视图适用于外部数据,因此可能会引发一些意外异常。我当然需要知道发生了什么。所以我有这样的想法:

def my_view(request):
    try:
        # a lot of code
        return HttpResponse('')
    except:
        import logging
        logger = logging.getLogger('django.request')
        # logger.error(extra={'request': request}) or logger.exception()
        return HttpResponseBadRequest('')
Run Code Online (Sandbox Code Playgroud)

如果重要的话,我有一个默认的日志配置(django 1.5)。

logger.exception只发送一个小的回溯,不发送请求数据。 logger.error只发送请求数据。

所以问题是如何获得与 django 发送的完全相同的回溯(具有相同的主题/正文))。我认为必须有一些我找不到的干净简单的解决方案。

更新

因此,使用修补exception方法,我最终得到了以下代码:

logger.exception('Internal Server Error: %s', request.path,
                 extra={'status_code': 500, 'request': request})
Run Code Online (Sandbox Code Playgroud)

它产生与内置 django 日志记录相同的电子邮件回溯。

django logging exception

5
推荐指数
1
解决办法
1258
查看次数

标签 统计

django ×2

exception ×1

json ×1

logging ×1

orm ×1