2016-12-06 96 views
0

我使用Django作为我的web-app的后端,django-haystack(with Solr)用于搜索&显示结果。 我使用RealTimeSignalProccessor表格django-haystack,但我有一个问题:
- 我有一个Auction modelexpires-(DateTimeField)。当我显示结果时,我会像电子海湾一样进行类似的操作(例如:过期时间:1小时23分5秒)。
的问题是,所有的拍卖都显示,如果要更新每次访问这个视图(如我的Django的草垛文档中读过的)时间Expires in参数页面上,你将不得不使用用于更新Solr索引数据库的object.save()方法。但是,如果我每次进入所有拍卖列出的视图,都会得到30个结果,但速度非常慢,效率不高。
是否有任何其他的解决办法?你有什么建议?使用django-haystack优化显示结果RealTimeSignalProcessor

+0

这背后为什么你要更新价值的过期的理由?这与那些过期时间大于utcnow()的值的DateTimeField asc排序不同吗? – MatsLindh

+0

'Expires'总是比utcnow()时,关于更新 - 我需要表现留到拍卖finishesh的时间。例如:2d 4h 3m和刷新页面(将其更改为2d 4h 2m等)。正如我通过'django-haystack'文档所说的那样。你需要调用对象的save()方法来更新Solr的参数吧 – lcadc17

+0

是的,但“到期”的一部分并不真正需要的是你的数据库的一部分。在您的模型或视图中检索它时计算它。更新每个页面视图的x行数将导致问题在后面。 – MatsLindh

回答

1

无需在数据库中更新expires_in字段 - 保留expires_at的广告到期时间,并计算您的模型或视图中检索方法的剩余时间。

通过这种方式,您可以避免在流量增加时必须向数据库写入更多数据,并且如果到期日期发生更改,您将不会遇到可能的竞争状况,如果人们在同一时间查看网页正在更新到期时间。