许多有经验的开发人员建议不要使用Django多表继承,因为它的性能很差:
Django的疑难杂症:混凝土继承由雅各布·卡普兰,莫斯,Django的一个核心因素.
几乎在所有情况下,抽象继承是一种长期更好的方法.我看到在混凝土继承引入的负载下,有很多网站被粉碎,所以我强烈建议Django用户在大量怀疑的情况下使用具体的继承.
Django中的两勺由丹尼尔·格林菲尔德(@pydanny)
多表继承,有时称为"具体继承",作者和许多其他开发人员认为这是一件坏事.我们强烈建议不要使用它.
不惜一切代价,每个人都应该避免多表继承,因为它会增加混乱和大量开销.而不是多表继承,在模型之间使用显式OneToOneFields和ForeignKeys,以便您可以控制何时遍历连接.
但是没有多表继承,我不能轻易
另一个模型中的参考基础模型(必须使用GenericForeignKey或反向依赖);
(随意添加更多)
那么Django中这种继承有什么问题?为什么明确的OneToOneField更好?
性能对JOIN的影响有多大?有没有显示性能差异的基准测试?
不会select_related()让我们连接被调用时控制?
django inheritance models concrete-inheritance multi-table-inheritance
当我更改help_text或verbose_name运行任何模型字段并运行时python manage.py makemigrations,它会检测到这些更改并创建新的迁移,例如0002_xxxx.py.
我正在使用PostgreSQL,我认为这些更改与我的数据库无关(我想知道这些更改是否存在相关的DBMS).
为什么Django会为此类更改生成迁移?有没有选择忽略它们?
我可以手动安全地删除0002_xxxx.py上次迁移(0001_initial.py)的更改0002_xxxx.py吗?
有没有办法自动更新以前的迁移?
我正在使用Django REST Framework来序列化Django模型.我有一个ListCreateAPIView视图列出对象和一个RetrieveUpdateDestroyAPIView视图来检索/更新/删除单个对象.该模型存储用户自己提交的信息.他们提交的信息包含一些私人信息和一些公共信息.我希望所有用户能够列出和检索公共信息,但我只希望所有者列出/检索/更新/删除私人信息.因此,我需要每个字段的权限而不是对象权限.
我找到的最接近的建议是https://groups.google.com/forum/#!topic/django-rest-framework/FUd27n_k3U0,它会根据请求类型更改序列化程序.这对我的情况不起作用,因为我当时没有查询集或对象来确定它是否归用户所有.
当然,我的前端隐藏了私人信息,但聪明的人仍然可以窥探API请求以获取完整的对象.如果需要代码,我可以提供它,但我的请求适用于vanilla Django REST Framework设计.
所以我试图通过运行以下代码来更新我的模型:
FooBar.objects.filter(something=True).update(foobar=F('foo__bar'))
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
FieldError: Joined field references are not permitted in this query
Run Code Online (Sandbox Code Playgroud)
如果F表达式不允许这样做...我怎样才能实现此更新?
鉴于这张票中的信息,我现在明白这是不可能的,永远不会在django中实现,但有没有办法实现这个更新?也许有一些解决方法?我不想使用循环,因为有超过1000万个FooBar对象,所以SQL比python快得多.
我的PostgreSQL安装在Windows上.如何将数据从MySQL数据库迁移到PostgreSQL?我读过大量的aricles.什么都没有帮助:(
谢谢.
我的行动:
mysql转储:
mysqldump -h 192.168.0.222 --port 3307 -u root -p --compatible=postgresql synchronizer > c:\dump.sql
Run Code Online (Sandbox Code Playgroud)在pgsql上创建db同步器
进口转储:
psql -h 192.168.0.100 -d synchronizer -U postgres -f C:\dump.sql
Run Code Online (Sandbox Code Playgroud)输出:
psql:C:/dump.sql:17: NOTICE: table "Db_audit" does not exist, skipping
DROP TABLE
psql:C:/dump.sql:30: ERROR: syntax error at or near "("
?????? 2: "id" int(11) NOT NULL,
^
psql:C:/dump.sql:37: ERROR: syntax error at or near ""Db_audit""
?????? 1:LOCK TABLES "Db_audit" WRITE;
^
psql:C:/dump.sql:39: ERROR: relation "Db_audit" does not exist
?????? 1:INSERT INTO "Db_audit" VALUES (4068,4036,4,1,32,'2010-02-04 …Run Code Online (Sandbox Code Playgroud)当我启动PyCharm for remote python interpreter时,它总是执行"Uploading PyCharm helpers",即使远程机器IP是相同的并且已经包含以前上传的帮助程序.行为是否正确?
我一直在寻找Django和jQuery的方法.我在Django中构建了一个基本表单.在单击提交时,我正在使用jQuery向服务器发出AJAX请求以发布我的数据.这一点似乎工作正常,我已设法保存数据.当表单无效时,Django返回ValidationError.谁能告诉我如何返回这组错误消息作为对我的AJAX请求的响应,所以我可以轻松地使用JS迭代它并做任何事情?
我找到了这个片段.查看JS位(processJson),您会看到他似乎通过从响应HTML中提取错误消息来获取错误消息.这对我来说似乎有些愚蠢.这是最好的方式吗?
我对任何模糊的道歉.
提前致谢.
我有一个小脚本,将任务排入队列.此脚本生成大量数据库查询以获取应入队的项目.我面临的问题是,芹菜工人一旦被剧本排队就开始接收任务.这是正确的,这是芹菜应该工作的方式,但这往往导致我的脚本和芹菜工人之间的僵局.
有没有办法可以从脚本中排除我的所有任务,但延迟执行直到脚本完成或直到固定的时间延迟?
我在芹菜或django-芹菜的文件中找不到这个.这可能吗?
目前作为一个快速修复我想到将要处理的所有项目添加到列表中,当我的脚本完成所有查询后,我可以简单地遍历列表并将任务排队.也许这会解决问题,但是当你有数千个物品入队时,这可能是一个坏主意.
我正在尝试配置nginx + uWSGI来为我的Django应用程序提供服务.
当我将环境变量放入myapp_uwsgi.ini:
uid = username
gid = username
env = DJANGO_SITE_KEY="..."
Run Code Online (Sandbox Code Playgroud)
它按预期工作.
但是,我的应用程序有一些管理命令,它们也应该可以访问我定义的环境变量.
如果我把环境变量放到/home/username/.bashrc:
export DJANGO_SITE_KEY="..."
Run Code Online (Sandbox Code Playgroud)
uWSGI不加载它们.
我试图将环境变量放入一个单独的文件中:
#!/bin/sh
export DJANGO_SITE_KEY="..."
Run Code Online (Sandbox Code Playgroud)
然后从两个调用它.bashrc:
. /home/username/environment
Run Code Online (Sandbox Code Playgroud)
并且myapp_uwsgi.ini:
exec-pre-app = . /home/username/environment
Run Code Online (Sandbox Code Playgroud)
在uWSGI日志中,我看到这一行:
running ". /home/username/environment" (pre app)...
Run Code Online (Sandbox Code Playgroud)
但我的Django应用程序无法访问环境变量os.environ.
我也曾尝试把export命令到preactivatevirtualenvwrapper的钩和使用virtualenv =uWSGI的设置,但它并没有太多的工作(我假设使用virtualenvwrapper命令喜欢当钩子才执行workon.
PyCharm中有一个快捷方式可以转到当前模块中导入符号的位置吗?
我尝试了"Go To Declaration"但它转到另一个模块.
django ×7
python ×4
pycharm ×2
ajax ×1
celery ×1
django-1.7 ×1
django-1.9 ×1
django-forms ×1
dump ×1
inheritance ×1
jquery ×1
migration ×1
models ×1
mysql ×1
nginx ×1
postgresql ×1
sql ×1
uwsgi ×1