我有一个相当简单的查询,我想通过ORM,但无法弄清楚..
我有三个型号:
位置(地点),属性(地点可能具有的属性)和评级(还包含分数字段的M2M'到'模型)
我想选择一些重要的属性,并能够按这些属性对我的位置进行排名 - 即所有选定属性的总得分越高=越好.
我可以使用以下SQL来获得我想要的东西:
select location_id, sum(score)
from locations_rating
where attribute_id in (1,2,3)
group by location_id order by sum desc;
Run Code Online (Sandbox Code Playgroud)
返回
location_id | sum
-------------+-----
21 | 12
3 | 11
Run Code Online (Sandbox Code Playgroud)
我能用ORM得到的最接近的是:
Rating.objects.filter(
attribute__in=attributes).annotate(
acount=Count('location')).aggregate(Sum('score'))
Run Code Online (Sandbox Code Playgroud)
哪个回报
{'score__sum': 23}
Run Code Online (Sandbox Code Playgroud)
即所有的总和,不按位置分组.
有什么方法吗?我可以手动执行SQL,但宁可通过ORM来保持一致.
谢谢
背景: 当支付服务在幕后追回付款结果时调用该视图 - 之后我需要以正确的语言发送电子邮件以确认付款等等.我可以在支付服务器的请求中获取语言代码,并希望将其与Django的i18n系统一起使用,以确定将我的电子邮件发送到哪种语言.
所以我需要在视图中设置我的django应用程序的语言.然后一次性完成我的模板渲染和电子邮件.
设置request.session['django_language'] = lang
仅在我测试时影响下一个视图.
还有其他办法吗?
干杯,
家伙
我有一个预订模型,需要检查预订的项目是否可用.我想知道这个项目是否可以集中存在的逻辑,这样无论我在哪里保存实例,这个代码都会验证它是否可以保存.
目前我在我的模型类的自定义保存功能中有这个代码:
def save(self):
if self.is_available(): # my custom check availability function
super(MyObj, self).save()
else:
# this is the bit I'm stuck with..
raise forms.ValidationError('Item already booked for those dates')
Run Code Online (Sandbox Code Playgroud)
这很好 - 如果项目不可用,则会引发错误,并且我的项目未保存.我可以从我的前端表单代码中捕获异常,但是Django管理站点呢?如何将我的异常显示为与管理站点中的任何其他验证错误一样?
原谅我的无知,但是来自Django/Python背景我可以看到让Celery队列在后台运行较慢进程的巨大好处,同时尽可能快地更新Web界面.
但是,由于Node异步工作,队列系统的用例是否会大大减少?
例如:
1 - 用户向网站发布内容,2 - 网站响应,然后邮寄管理员.
在Django中,您将管理邮件发送到任务,稍后执行,然后响应请求.芹菜在后台发送邮件.
在Node中,您调用邮件程序,然后回复请求.然后邮件程序发送回叫以表示DONE与否,此时用户已经在查看响应.
那么我为什么要使用Node队列呢?我猜测事情比这更复杂 - 似乎对于像交易邮件那样的琐碎事情,它没有必要......
或者我误解了它的运作方式!?
如何从Django设置P3P紧凑隐私策略,以便IE在安全设置为HIGH时接受来自我网站的cookie - 即除非有紧凑隐私政策,否则不接受cookie.
干杯盖伊
我有一个包含100个左右条目的模型 - 客户希望这些条目以"随机"顺序出现,但也希望在那里进行分页.
def my_view(request):
object_list = Object.objects.all().order_by('?')
paginator = Paginator(object_list, 10)
page = 1 # or whatever page we have
display_list = paginator.page(page)
....
Run Code Online (Sandbox Code Playgroud)
所以我的问题应该是 - 如何object_list
在每个用户会话中创建一次?
我曾经像这样使用fswatch v0.0.2(在这个例子中,当文件改变时运行django test suit)
$>fswatch . 'python manage.py test'
这很好用.
我想排除一些导致测试每次保存运行多次的文件(Sublime文本正在保存.tmp文件,我怀疑.pyc文件也导致这种情况)
所以我升级了fswatch以启用-e模式.
然而fswatch改变的方式导致了我的麻烦 - 它现在接受一个像这样的管道参数:
$>fswatch . | xargs -n1 program
我无法弄清楚如何将参数传递给程序.例如,这不起作用:
$>fswatch . | xargs -n1 python manage.py test
这也不是:
$>fswatch . | xargs -n1 'python manage.py test'
如果不在bash脚本中打包我的命令,我怎么能这样做?
我正在寻找一个Django应用程序,它可以收集统计数据以显示给我的用户 - 即用户对他们拥有的对象有多少次观看/点击/互动 - 跟踪一段时间等.类似于如何查看您的统计数据flickr照片等.
或者是否有可以收集此信息并用于将其显示给我的注册用户的服务?
编辑:
或者如此简单的应用程序如何记录这样的东西 -
stats.log_action(my_object, stats.VIEW)
stats.log_action(my_object, stats.CLICK)
然后,这将简单地存储动作+对象以及DateTime.使用通用外键关系...然后我们可以得到汇总结果并显示它们我们喜欢的方式......我想现在,这应该是这样的 -
那么......那里有什么可以做到的吗?或者我应该自己动手?
谢了,兄弟们
我正在尝试在Heroku上安装M2Crypto.这依赖于SWIG的安装.
我创建了一个自定义编译的swig
可执行文件和一个自定义的buildpack.
我然后git push
我的代码到Heroku,自定义buildpack安装SWIG然后尝试安装M2Crypto但失败,因为它找不到swig
.
这是buildpack定制:
# Install SWIG
if [ ! -d $CACHE_DIR/swig ]; then
cd $BUILD_DIR
echo "-----> Fetching and installing SWIG 2"
curl -O https://s3.amazonaws.com/guybowden/swig.tar.gz >/dev/null 2>&1
echo "-----> Installing ..."
tar xzvf swig.tar.gz >/dev/null 2>&1
mv swig $CACHE_DIR/swig
rm swig.tar.gz
echo "SWIG installed" | indent
fi
mkdir -p .paybox
cp -R $CACHE_DIR/swig .paybox
echo "updating path..." | indent
PATH=$PATH:/app/.paybox/swig/bin/
export PATH
echo $PATH | indent
echo "setting …
Run Code Online (Sandbox Code Playgroud) Contentful 有一个“链接”的概念,它可以指向许多对象或一个。但是,我无法找到一种方法来模拟反向关系而不加倍工作(即指定每个对象的子项和父项)。
我想使用 Contentful 来支持一个简单的导航,如下所示:
菜单项 1
菜单项 2
链接可能看起来像 /<parent.slug>/<child.slug>/<child.slug>/
我可以通过遍历父级关系来找到要呈现的页面条目,以确保我得到一个带有 slug 的页面,以及一个带有特定 slug 的父级。
但是,除非您在对象中包含“子项”字段,否则很难在不诉诸多个 API 调用的情况下呈现子菜单项 - 这容易出错和不一致。