小编Eri*_*ric的帖子

如何在django中使用子查询?

我想获得每个客户的最新购买清单,按日期排序.

以下查询执行我想要的日期除外:

(Purchase.objects
         .all()
         .distinct('customer')
         .order_by('customer', '-date'))
Run Code Online (Sandbox Code Playgroud)

它会产生如下查询:

SELECT DISTINCT ON 
    "shop_purchase.customer_id" 
    "shop_purchase.id" 
    "shop_purchase.date" 
FROM "shop_purchase" 
ORDER BY "shop_purchase.customer_id" ASC, 
         "shop_purchase.date" DESC;
Run Code Online (Sandbox Code Playgroud)

我被迫使用customer_id作为第一个ORDER BY表达因为DISTINCT ON.

我想按日期排序,所以我真正需要的查询应该是这样的:

SELECT * FROM (
  SELECT DISTINCT ON 
      "shop_purchase.customer_id" 
      "shop_purchase.id" 
      "shop_purchase.date" 
  FROM "shop_purchase" 
  ORDER BY "shop_purchase.customer_id" ASC, 
           "shop_purchase.date" DESC;
  )
AS result 
ORDER BY date DESC;
Run Code Online (Sandbox Code Playgroud)

我不想使用python排序,因为我仍然需要页面限制查询.数据库中可能有数万行.

实际上它现在在python中排序,并且导致非常长的页面加载时间,所以这就是我试图解决这个问题的原因.

基本上我想要这样的东西/sf/answers/685727311/.是否可以用django查询集来表达它而不是编写原始SQL?

实际的模型和方法有几页长,但这里是上面的查询集所需的模型集.

class Customer(models.Model):
  user = models.OneToOneField(User)

class Purchase(models.Model):
  customer = models.ForeignKey(Customer)
  date = models.DateField(auto_now_add=True)
  item = models.CharField(max_length=255)
Run Code Online (Sandbox Code Playgroud)

如果我有以下数据: …

django postgresql django-queryset

19
推荐指数
2
解决办法
7413
查看次数

如何优化此Haskell限制订单(包含代码,报告,图表)?

我写了一个限制订单簿的haskell版本,引用用C编写的这个版本:

https://github.com/jordanbaucke/Limit-Order-Book/blob/master/Others/C%2B%2B/engine.c

限价订单簿是许多股票和货币交易所用于计算货币和股票交易的机制.

此haskell版本(源代码进一步向下)向订单簿提交2000个随机限价订单,并计算平均执行价格.

main = do
  orders <- randomOrders
  let (orderBook, events) = foldr (\order (book, ev) -> let (b, e) = processOrder order book in (b, ev++e)) (empty, []) 
                            (take 2000 orders) 
  let (total, count) = ((fromIntegral $ sum $ map executePrice events), fromIntegral $ length events)
  print $ "Average execution price: " ++ show (total / count) ++ ", " ++ (show count) ++ " executions"
Run Code Online (Sandbox Code Playgroud)

我用-O2编译它,并且在没有分析的情况下运行程序需要将近10秒.

time ./main                                                           
"Average execution price: 15137.667036215817, 2706.0 executions"
./main  9.90s …
Run Code Online (Sandbox Code Playgroud)

optimization haskell functional-programming compiler-optimization computational-finance

11
推荐指数
1
解决办法
1076
查看次数

如何重定向到DJANGO中包含非ascii字符的查询字符串URL?

如何重定向到DJANGO中包含非ascii字符的查询字符串URL?

当我使用包含字符的return HttpResponseRedirect(u'/page/?title=' + query_string)地方时,我收到错误query_string??

'ascii'编解码器不能编码21-26位的字符:序号不在范围内(128),HTTP响应头必须是US-ASCII格式...

python django unicode httpresponse

6
推荐指数
2
解决办法
3448
查看次数

即使用户事件触发,Facebook权限弹出也会被阻止.为什么?

这是页面:http://textbookcentral.com.au/26/university-of-new-south-wales/buy/69897/acct1501/?query=

当"告诉别人我在facebook墙上买一本教科书"时.选中复选框并单击"请求此教科书",无论表单输入数据是否有效,它都会尝试在您的Facebook墙上发布墙贴,根据需要打开登录对话框或权限对话框.

但是,如果您的浏览器阻止弹出窗口,则不会显示该对话框.我在Safari和Firefox中测试了这个.

只有当您单击"请求此教科书"按钮时才会触发javascript,但弹出窗口仍然被阻止,为什么?

(查看源代码,向下滚动,您还会看到以下相关代码.)

<a href="#" class="submit button" onclick="make_facebook_request_post()">Request this textbook</a></p>
  </div>

  </form>

</div>
<script type="text/javascript">
function make_facebook_request_post() {

  if ($('#id_facebook').is(':checked')) {
    facebook.do_post(function(success) {}, 
      'I am using http://textbookcentral.com.au to buy a textbook for ACCT1501.', 'publish_stream')
  }

}
</script>
Run Code Online (Sandbox Code Playgroud)

facebook.do_post函数将进行FB.api调用.见http://textbookcentral.com.au/site_media/static/central/js/facebook.js

javascript facebook popup facebook-javascript-sdk

6
推荐指数
1
解决办法
9061
查看次数

django-cron是如何工作的?

使用django站点的cron作业的常规方法是使用cron定期运行自定义管理命令.

但我发现了这个http://code.google.com/p/django-cron/

它如何工作,不需要cron?什么调用它进行民意调查?

如果它只是为http请求设置一个定期命中的地址,那么如果作业需要很长时间,那么服务器不会超时吗?

python django cron django-cron

5
推荐指数
2
解决办法
974
查看次数

Cloudflare 可以为匿名用户但未登录的用户缓存 HTML 吗?

我们有一个网站,其中匿名用户内容通常是静态的(每小时更新一次),而每个用户的登录用户内容都不同,并且经常更新。

是否可以配置 cloudflare,以便为匿名用户缓存 HTML,但不为登录用户缓存相同的 URL?

我们是否可以设置相关的缓存标头?

cloudflare

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

Django在clean()和save()之间锁定

假设我有一个带有唯一字段电子邮件的模型:

class MyModel:

    email = models.EmailField(unique=True)

    def save(self):
        .... # save model

    def clean(self):
        .... # validate model, make sure email doesn't already exist.
Run Code Online (Sandbox Code Playgroud)

通常,如果浏览器提交的表单中包含已存在的值的电子邮件,则会因模型表单字段验证而引发ValidationError.

如果两个浏览器同时提交相同的电子邮件,而电子邮件是一个尚不存在的值,则至少有一个请求会通过将一行保存到数据库中而成功.另一个请求,如果它在第一个请求之后到达足够长的时间,将被正常处理 - 引发ValidationError表示该电子邮件已经存在.但是如果它几乎与第一个同时到达,那么clean()将成功 - 电子邮件尚未存在,但是当save()执行该方法时,第一个请求中的行将被保存.在后一种情况下,将引发IntegrityError,服务器将返回Internal Server 500错误,这是不合需要的.

如何防止这最后一种情况?数据库交易?

python django

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