如何auth_user在django中为该类使用自定义管理器?
在我的django项目中,我正在使用auth_user,我有一个基本的个人资料类.在我网站的每个页面中,我都使用了一些用户和个人资料数据,因此每个用户查询都应该加入个人资料.
我想在自定义管理器中使用select_related该get_query_set()方法,但我找不到任何正确的方法来定义一个,或覆盖现有的UserManager.有任何想法吗?
注意:我不想覆盖用户模型.或者,更确切地说,我已经在不同的代理模型中覆盖了它.我希望在每个代理模型中使用此自定义管理器.
在我的django项目中,我使用mysql db进行生产,使用sqlite进行测试.
问题是,我的一些代码依赖于模型完整性检查.它适用于mysql,但在测试中执行相同的代码时不会抛出完整性错误.
我知道必须在sqlite中激活外键检查:
PRAGMA foreign_keys = 1;
Run Code Online (Sandbox Code Playgroud)
但是,我不知道这种激活的最佳方式在哪里(这里也是同样的问题).
此外,以下代码将不起作用:
def test_method(self):
from django.db import connection
cursor = connection.cursor()
cursor.execute('PRAGMA foreign_keys = ON')
c = cursor.execute('PRAGMA foreign_keys')
print c.fetchone()
>>> (0,)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
在django项目中,我需要为db中的对象生成一些pdf文件.由于每个文件都需要几秒钟才能生成,因此我使用celery异步运行任务.
问题是,我需要将每个文件添加到zip存档中.我打算使用python zipfile模块,但不同的任务可以在不同的线程中运行,我想知道如果两个任务同时尝试将文件添加到存档会发生什么.
以下代码线程是否安全?我在python官方文档中找不到任何有价值的信息.
try:
zippath = os.path.join(pdf_directory, 'archive.zip')
zipfile = ZipFile(zippath, 'a')
zipfile.write(pdf_fullname)
finally:
zipfile.close()
Run Code Online (Sandbox Code Playgroud)
注意:这是在python 2.6下运行的
我在ElasticSearch中有一堆索引的文档,我需要获取以下数据:
对于每个月,获取当月每个工作日的平均文档数(或者如果不可能,则使用20天作为默认值).
我已经使用聚合将我的数据汇总到了几个桶中date histogram.我尝试嵌套stats存储桶,但此聚合使用从文档字段中提取的数据,而不是从父存储桶中提取的数据.
这是我目前的查询:
{
"query": {
"match_all": {}
},
"aggs": {
"docs_per_month": {
"date_histogram": {
"field": "created_date",
"interval": "month",
"min_doc_count": 0
}
"aggs": {
'???': '???'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
为了使我的问题更清楚,我需要的是:
date_histogram聚合已经完成)一旦数据库在 Django 中准备就绪,我就需要做一些事情。具体来说,我需要对来自 db 的值执行一些计算并将结果填充到缓存中。
从 django 1.7 开始,应用程序注册表可以很容易地知道应用程序或模型何时可以使用。你可以写:
from django.apps import apps
if apps.ready:
do_some_stuff()
Run Code Online (Sandbox Code Playgroud)
但是我发现模型准备好了并不意味着可以查询数据库。Django 文档 说:
尽管您可以如上所述访问模型类,但请避免在 ready() 实现中与数据库交互
我试着去参加这个post_migrate活动。如果我正在重建数据库(例如启动测试套件),它会起作用,但如果我只是使用现有数据库(例如使用runserver),则不会。
有没有办法知道数据库在 Django >= 1.7 中是否完全可用?
我想使用Foundation的reveal插件在Cycle.js应用程序中显示一个很好的模态.
在玩了几个小时的Webpack和它的配置后,我想出了如何将基础的js导入我的(es6)应用程序.
但是,由于我正在处理虚拟dom,当基础的js初始化时,实际的html不存在.
这是我的组件代码:
import Rx from 'rx';
import {div} from '@cycle/dom';
import $ from 'jquery';
import {foundation} from 'foundation-sites/js/foundation.core';
import 'foundation-sites/js/foundation.util.keyboard';
import 'foundation-sites/js/foundation.util.box';
import 'foundation-sites/js/foundation.util.triggers';
import 'foundation-sites/js/foundation.util.mediaQuery';
import 'foundation-sites/js/foundation.util.motion';
import 'foundation-sites/js/foundation.reveal';
require('./styles/configuration-modal.scss');
function ConfigurationModal(sources) {
const values$ = sources.props$;
const vtree$ = Rx.Observable.just(1).map(() => {
return div(
'#config-modal.reveal',
{attributes: {
'data-reveal': ''
}},
['hello']
);
});
return {
DOM: vtree$,
values$
};
}
$(function() {
$.fn.foundation = foundation;
$(document).foundation();
});
export default ConfigurationModal;
Run Code Online (Sandbox Code Playgroud)
我的main.js:
import Rx from 'rx';
import …Run Code Online (Sandbox Code Playgroud) reactive-programming zurb-foundation ecmascript-6 virtual-dom cyclejs
我使用 TravisCi 来构建和测试基于 Django 的项目。
构建失败的 db 相关错误似乎与所使用的错误 postgres 版本有关。但是,按照 Travis doc 设置 Postgres 的版本似乎没有按预期工作。
这是我的.travis.yml文件:
language: python
python:
- "3.6"
addons:
- postgresql: "9.6"
before_install:
- cd $TRAVIS_BUILD_DIR/src
install:
- npm install -g sass
- make init
before_script:
- psql --version
- psql -c 'SELECT version();' -U postgres
- psql -c "CREATE USER aides WITH CREATEDB PASSWORD 'aides';" -U postgres
script:
- make checkstyle
- make test
Run Code Online (Sandbox Code Playgroud)
这是困扰我的构建部分:
$ psql --version
psql (PostgreSQL) 9.6.6
$ psql -c …Run Code Online (Sandbox Code Playgroud) django ×5
postgresql ×2
celery ×1
cyclejs ×1
database ×1
django-orm ×1
ecmascript-6 ×1
facets ×1
integrity ×1
pragma ×1
python ×1
sqlite ×1
travis-ci ×1
usermanager ×1
virtual-dom ×1
zipfile ×1