我在我的网站上使用django-haystack搜索页面.我基本上已经完成了,但对订购不太满意,不太确定haystack如何决定如何订购.
我知道我可以通过使用order_by
覆盖SearchQuerySet 但完全超越它.假设我想强制搜索按库存(BooleanField)进行排序,以便库存中的产品显示在顶部,但随后会像通常那样执行其他操作.我怎么做?
我试过把order_by('-in_stock', 'content')
图形内容当作默认使用的内容,但它产生了非常不同的结果,如果我只是让它做自己的排序.
感谢您对此事的任何意见!
简单的问题.我想补充一下:
Disallow */*details-print/
Run Code Online (Sandbox Code Playgroud)
基本上,/foo/bar/dynamic-details-print
在这个例子中以--- foo和bar 形式的阻塞规则也可以是完全动态的.
我认为这很简单,但是在www.robotstxt.org上有这样的信息:
另请注意,User-agent或Disallow行不支持globbing和正则表达式.User-agent字段中的'*'是一个特殊值,意思是"任何机器人".具体来说,你不能拥有像"User-agent:bot ","Disallow:/ tmp/*"或"Disallow:*.gif"这样的行.
所以我们不能这样做?搜索引擎是否遵守它?但是,有Quora.com的robots.txt文件:
Disallow: /ajax/
Disallow: /*/log
Disallow: /*/rss
Disallow: /*_POST
Run Code Online (Sandbox Code Playgroud)
那么,谁是对的 - 或者我是否误解了robotstxt.org上的文字?
谢谢!
所以我只是设置celery和rabbitmq,创建我的用户,设置vhost,将用户映射到vhost,并成功运行celery守护进程(或者我假设)
(queuetest)corky@corky-server:~/projects/queuetest$ ./manage.py celeryd
celery@corky-server v0.9.5 is starting.
Configuration ->
. broker -> amqp://celery@localhost:5672/
. queues ->
. celery -> exchange:celery (direct) binding:celery
. concurrency -> 2
. loader -> celery.loaders.djangoapp
. logfile -> [stderr]@WARNING
. events -> OFF
. beat -> OFF
Celery has started.
Run Code Online (Sandbox Code Playgroud)
我创造了一个"芹菜"的用户,因为在这种情况下我并没有感觉很有创造力.
当我尝试在芹菜文档中做一个简单的例子时:
>>> from tasks import add
>>> r = add.delay(2, 2)
>>> r
<AsyncResult: 16235ea3-c7d6-4cce-9387-5c6285312c7c>
>>> r.ready()
(hangs for eternity.)
Run Code Online (Sandbox Code Playgroud)
所以我检查了常见问题解答,想知道还有什么可能会起来,它告诉我这是一个由于用户权限而导致的常见错误,所以我三重检查那些,没有,做了另一个新用户,仍然没有.如果我DjangoBrokerConnection
从中导入carrot.connection
并获取信息,它会与我的芹菜设置中的内容相匹配.常见问题解答说明了检查您的日志文件.
我的rabbit.log
文件在这种情况下不是很有用,只是显示:
=INFO REPORT==== 26-Jan-2010::11:58:22 ===
accepted …
Run Code Online (Sandbox Code Playgroud) 我最近升级到Ruby 1.9,我不能再使用Sass编译任何东西.
如果我放置,我已经看到了解决方案
@charset "utf-8";
Run Code Online (Sandbox Code Playgroud)
在我的.sccs文件的顶部,它将修复它.但是我仍然收到错误.这是完整的追溯
我也尝试从我的CSS文件中删除任何非ascii字符,创建一个新的等等.它只是不会编译.有小费吗?
追溯:
Sass正在关注变化.按Ctrl-C停止.
/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:496:in`coding':不支持转码(从ASCII-8BIT到UTF-8)(ArgumentError)
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:496:in
_enc' from /home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:515:in
block in block(1 levels)in'来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:508:in`block(1 levels)in'
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:472:in"yield"
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:472:in'default'
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:472:in,clock in check_sass_encoding'
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:471:in"each"
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:471:in`find'
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/util.rb:471:in`check_sass_encoding'
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/engine.rb:349:in`check_encoding!'
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/engine.rb:316:in`_to_tree'
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/engine.rb:291:in`_render'
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/engine.rb:238:在`render'中
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/plugin/compiler.rb:319:in`update_stylesheet'
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/plugin/compiler.rb:169:in在update_stylesheets中的块
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/plugin/compiler.rb:167:in"each"
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/plugin/compiler.rb:167:in`update_stylesheets'
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/plugin/compiler.rb:214:in`watch'
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/plugin.rb:111:in`method_missing'
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/exec.rb:408:in`watch_or_update'
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/exec.rb:294:in,process_result'
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/exec.rb:41:in"parse"
来自/home/webdev/.gem/repository/gems/sass-3.1.1/lib/sass/exec.rb:21:in"解析!"
来自/home/webdev/.gem/repository/gems/sass-3.1.1/bin/sass:8:in`'
来自/home/webdev/.gem/repository/bin/sass:19:in"load'
来自/home/webdev/.gem/repository/bin/sass:19:in`'
我正在比较我的旧PHP脚本与较新的,更高级的Django版本和PHP版本,完全吐出HTML并且所有功能都运行得更快.更快到Django上的某些东西必须出错.
首先,一些背景信息:我有一个页面可以显示销售数据的报告.数据可以通过许多方式进行过滤,但大部分都是按日期过滤的.这使得缓存它有点困难,因为结果的可能性几乎是无穷无尽的.有很多数字和计算完成但在PHP中处理从来都不是一个问题.
更新:
经过一些额外的测试后,我的观点中没有任何因素导致经济放缓.如果我只是对数据进行数字处理并吐出5行渲染的HTML,那就不那么慢(仍然比PHP慢),但如果我渲染了大量数据,那就非常慢了.
每当我运行大型报告(例如,当年的所有销售)时,机器的CPU使用率就会达到100%.不知道这是否意味着什么.我正在使用mod_python和Apache.也许转换到WSGI可能会有所帮助?
对于非常大的集合,我的模板标签显示小计/总计处理的范围从0.1秒到1秒.我在报告中称他们为6次,所以他们似乎不是最大的问题.
现在,我运行了一个Python分析器并返回了这些结果:
Ordered by: internal time List reduced from 3074 to 20 due to restriction ncalls tottime percall cumtime percall filename:lineno(function) 2939417 26.290 0.000 44.857 0.000 /usr/lib/python2.5/tokenize.py:212(generate_tokens) 2822655 17.049 0.000 17.049 0.000 {built-in method match} 1689928 15.418 0.000 23.297 0.000 /usr/lib/python2.5/decimal.py:515(__new__) 12289605 11.464 0.000 11.464 0.000 {isinstance} 882618 9.614 0.000 25.518 0.000 /usr/lib/python2.5/decimal.py:1447(_fix) 17393 8.742 0.001 60.798 0.003 /usr/lib/python2.5/tokenize.py:158(tokenize_loop) 11 7.886 0.717 7.886 0.717 {method 'accept' of '_socket.socket' objects} 365577 7.854 0.000 30.233 0.000 /usr/lib/python2.5/decimal.py:954(__add__) …
我刚刚将我的一个模型转换为使用通用外键.模型正在使用这些,数据库正在报告正确的值,我所拥有的API与新的外键完美配合,零变化(保持相同的字段名称).
但是,管理员完全失败了.Inline显示没有数据,尽管有一些(见上文).这是我的型号代码:
class CartItem(models.Model):
cart = models.ForeignKey(Cart)
quantity = models.PositiveIntegerField()
price_item = models.DecimalField(max_digits=19, decimal_places=2)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField(db_column="shop_item_id")
shop_item = generic.GenericForeignKey("content_type", "object_id")
Run Code Online (Sandbox Code Playgroud)
相当直截了当吧?admin.py
看起来像这样:
class CartItemInline(generic.GenericTabularInline):
model = CartItem
class CartAdmin(admin.ModelAdmin):
inlines = [
CartItemInline,
]
Run Code Online (Sandbox Code Playgroud)
有趣的事实.如果我将'shop_item'添加到内联类中的字段元组,我会收到此错误:
'CartItemInline.fields'指的是表单中缺少的字段'shop_item'.
但是......它在那里?我已经尝试了一切,30分钟后,我只是放弃了最有可能解决问题的极其简单的问题,我的眼睛今天根本看不到.:(
所有这些在使用GenericForeignKey之前都有效,所以不确定问题是什么.
谢谢你的帮助.
这仅仅是一个我想根据其他人的反馈和类似的经历得出的理论.
一直在使用mySQL来运行测试,但当然内存中的SQLite数据库要快得多.但是,它似乎遇到了一些问题.
何时DATABASE_ENGINE
设置为use django.db.backends.sqlite3
并且我运行manage.py test
,输出不符合预期:
(删除了大多数行,但指出了有趣的失败点)
$ python manage.py test Traceback (most recent call last): File "manage.py", line 12, in execute_manager(settings) File "/Users/bartekc/.virtualenvs/xx/lib/python2.6/site-packages/django/core/management/__init__.py", line 438, in execute_manager utility.execute() File "/Users/bartekc/domains/xx/xx/associates/yy/models.py", line 51, in class AcvTripIncentive(models.Model): # First interesting failure File "/Users/bartekc/domains/xx/xx/associates/yy/models.py", line 55, in AcvTripIncentive trip = models.OneToOneField(Trip, limit_choices_to={'sites' : Site.objects.get(name='ZZ'), 'is_active' : True,}) # Next interesting failure File "/Users/bartekc/domains/xx/xx/associates/yyz/models.py", line 252, in current_site = Site.objects.get_current()
有这样的多个失败,但只是指出了一对.问题很明显.站点模型没有实际数据,但文件包含尝试获取站点模型下的当前或特定实例的代码.
现在,我可以想到一个简单的解决方案:OneToOneField
应该切换为使用函数limit_choices_to
,第二个使用相同的函数.然后在需要时调用这些函数,而不是在Django对文件进行初始扫描时调用.
但是,我的实际问题是:为什么这会发生在SQLite而不是mySQL?.两个数据库引擎通过测试有不同的方式吗?我不这么认为,因为Python正在对模型进行所有编译.
到底发生了什么? …
我正在寻找创建一个稍微复杂的查询,使用原始SQL很容易编写.以下是raw中查询的示例:
SELECT my,fields FROM sales WHERE is_paid = False OR status ='toship'AND otherfield ='FOO'AND another ='BAR'
这很简单,它生成所有结果为is_paid = False,然后为我的AND匹配生成第二个结果集.
现在我知道了Q对象,我知道有关过滤但是我似乎无法完全理解如何在Django ORM中实现这一目标.
有小费吗?
谢谢
我想在MDN描述使用富文本编辑命令的功能在这里
这个API似乎很简单.选择一些文本,然后执行命令,然后用它包装内容.酷的东西!
在Firefox(Aurora)中,这非常有用:
document.execCommand('heading', false, 'H1');
Run Code Online (Sandbox Code Playgroud)
但是Chrome中的相同命令不会返回任何内容.这在Chrome中的实现方式是否相同(或根本没有)?
谢谢!
我有大量的数据,通常大约有2000多个条目,但在本报告中,我们能够看到我们想要的内容,因此最多可以有10,000条记录
报告分为:两个类别,然后在每个类别中,我们按货币划分,因此我们在列表中有几个子类别.
我的问题在于有效地计算各种小计.我正在使用Django并将模板标签传递给货币和类别(如果适用),然后templatetag呈现总计.请注意,有时我只为该类别设置了一个小计,没有通过任何货币.
最初,如果有像这样的货币/类别,我只使用.filter()对每个小计使用单独的查询:
if currency:
entries = entries.filter(item_currency=currency)
Run Code Online (Sandbox Code Playgroud)
这成了一个问题,因为我会有太多的查询,而且生成时间太长(2000+ ms),所以我选择使用list(条目)来立即执行我的查询,然后通过简单的循环遍历它列表理解:
totals['quantity'] = sum([e.quantity for e in entries])
Run Code Online (Sandbox Code Playgroud)
如果你还没有看到我的问题,那就在于......如何在每个列表理解中有效地添加货币/类别的条件?有时他们不会在那里,有时他们会这样,所以我不能简单地输入:
totals['quantity'] = sum([e.quantity for e in entries if item_currency = currency])
Run Code Online (Sandbox Code Playgroud)
我可以制作一个巨大的if-block,但这不是很干净并且是一个维护灾难,所以我正在向Stackoverflow社区寻求一些洞察力...提前感谢:)
django ×7
python ×4
celery ×1
django-admin ×1
django-q ×1
encoding ×1
firefox ×1
javascript ×1
list ×1
optimization ×1
orm ×1
rabbitmq ×1
robots.txt ×1
ruby ×1
sass ×1
search ×1
seo ×1
sqlite ×1
unit-testing ×1