对于我的Django应用程序,我有事件,评级和用户.评级通过外键与事件和用户相关.当显示事件列表时,我想通过user_id过滤事件的评级,因此我知道用户是否对事件进行了评级.
如果我做:
event_list = Event.objects.filter(rating__user=request.user.id)
Run Code Online (Sandbox Code Playgroud)
(request.user.id给出当前登录用户的user_id)...然后我只获取用户评分的事件而不是整个事件列表.
我需要的东西可以通过自定义SQL生成:
SELECT *
FROM `events_event`
LEFT OUTER JOIN (
SELECT *
FROM `events_rating`
WHERE user_id = ##
) AS temp
ON events_event.id = temp.user_id
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法,所以我不必使用自定义SQL?
我正在使用jQuery Tablesorter,并且解决了对表列应用解析器的问题.我正在添加一个自定义解析器来处理$ -3.33形式的货币.
$.tablesorter.addParser({
id: "fancyCurrency",
is: function(s) {
return /^\$[\-]?[0-9,\.]*$/.test(s);
},
format: function(s) {
s = s.replace(/[$,]/g,'');
return $.tablesorter.formatFloat( s );
},
type: "numeric"
});
Run Code Online (Sandbox Code Playgroud)
问题似乎是内置货币解析器优先于我的自定义解析器.我可以将解析器放在tablesorter代码本身(在货币解析器之前)并且它正常工作,但这不是很容易维护.我无法使用以下方式手动指定分拣机:
headers: {
3: { sorter: "fancyNumber" },
11: { sorter: "fancyCurrency" }
}
Run Code Online (Sandbox Code Playgroud)
因为表列是从用户输入动态生成的.我想一个选项是指定分类器用作css类,并使用一些JQuery明确指定一个像这个问题建议的分类器,但我更愿意坚持动态检测,如果可能的话.
我有一个 python 脚本,它在几个地方调用 log.error() 和 log.exception()。捕获这些异常以便脚本可以继续运行,但是,我希望能够确定是否曾经调用过 log.error() 和/或 log.exception(),以便我可以退出带有错误代码的脚本通过调用 sys.exit(1)。下面包括使用“错误”变量的简单实现。在我看来,必须有更好的方法。
error = False
try:
...
except:
log.exception("Something bad occurred.")
error = True
if error:
sys.exit(1)
Run Code Online (Sandbox Code Playgroud)