我已经进行了迁移,添加了一个新表,并希望还原它并删除迁移,而不创建新的迁移.
我该怎么做?是否有恢复上次迁移的命令,然后我可以删除迁移文件?
我试图为我的第一个应用程序第一次推入Heroku git,我一直收到这个错误:
-----> Compiled slug size: 29.9MB
-----> Launching... ! Heroku push rejected, Could not communicate with vendor, please try again later
Run Code Online (Sandbox Code Playgroud)
我正在尝试部署django app.安装所有python包和'发现进程类型'后出现此错误.我的连接是100%罚款.
有任何想法吗?在帮助中心找不到任何东西.
谢谢!
我读过 django 会为所有外键自动创建 db_index 。但是,db_index 是否也提高了反向查找的性能?
例如,如果 B 有 A 的外键并且我使用 a.b_set.all(),我是否喜欢 db 索引带来的性能提升?
如果没有,有没有办法使用 db 索引使外键反向查找更快?
谢谢,
我有一个脚本通过cronjob在服务器上自动运行,它导入并运行其他几个脚本.
其中一些使用打印,这自然会创建,IOError: [Errno 5] Input/output error因为脚本运行时没有连接任何SSH /终端,因此没有正确的标准设置.
关于这个主题有很多问题,但我找不到任何实际解决它的人,假设我无法删除打印或更改执行的脚本.
我尝试了几件事,包括:
class StdOut(object):
def __init__(self):
pass
def write(self, string):
pass
sys.stdout = StdOut()
sys.stderr = StdOut()
Run Code Online (Sandbox Code Playgroud)
和
from __future__ import print_function
import __builtin__
def print(*args, **kwargs):
pass
__builtin__.print = print
Run Code Online (Sandbox Code Playgroud)
但它都不起作用.我认为它只会影响模块本身,而不会影响我以后导入/运行的模块.
那么如何创建一个会影响流程中所有模块的存根标准输出?就像我说的,我不想更改从主模块执行的脚本,但我可以更改导入模块中的所有内容.只是为了清除 - 一切都是进口的,没有新的流程产生等.
谢谢,
我在客户端生成了一个图像,我想通过表单传输到服务器.例如,假设我有一个注册表单,其中配置文件图像是由JavaScript自动生成的,我想将该图像传输到django.
当用户点击提交按钮时,将图像二进制数据传输到服务器的最佳方法是什么?我应该使用什么形式的字段?
谢谢!
我有一个名为'StoreItem'的模型和一个名为'QuoteItem'的模型.QuoteItem指向StoreItem.
我正在尝试注释一个计数器,该计数器指出商店项目上有多少引用项目,但是条件适用于报价项目.
我试过这样的事情:
items = items.annotate(
quote_count=Count(
Case(
When(quoteitem__lookup_date__in=this_week, then=1),
output_field=IntegerField()
)
)
)
Run Code Online (Sandbox Code Playgroud)
'items'是StoreItems的查询集.'this_week'是代表本周的日期列表(这是我尝试应用的过滤器).在我使日期工作之后,我想为这个条件计数添加更多过滤器,但让我们开始吧.
无论如何我得到的更像是一个布尔值 - 如果符合条件的引用项存在,无论我有多少,计数器将是1.否则,将为0.
它看起来是Count(Case())唯一检查是否存在任何项目,如果存在则返回1,而我希望它迭代指向商店项目的所有报价项目并计算它们,如果它们与条件匹配(单独).
我该如何实现?
在我的模型之一中,我有以下字段:
creation_time = models.DateTimeField(auto_now_add=True)
creation_date = models.DateField(db_index=True, auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
如果我使用创建时间(DateTimeField 字段)执行以下过滤器:
User.objects.filter(id__in=user_ids, creation_time__range=[start_date, end_date]).count()
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,运行需要几毫秒。但是,如果我对创建日期(带有数据库索引的 DateField 字段)执行相同的过滤器:
User.objects.filter(id__in=user_ids, creation_date__range=[start_date, end_date]).count()
Run Code Online (Sandbox Code Playgroud)
需要几分钟才能完成......最终我得到了与上面几乎相同的结果,但是经过了很长一段时间。
我认为这两个字段在数据库中的存储方式相同,唯一的区别是 django 如何将它们序列化/反序列化为 Python 对象(以及 ofc 日期字段获取默认午夜时间)。
那么为什么使用日期字段会慢很多呢?是因为 db_index (如果是的话,为什么)?
编辑:顺便说一句,他们的 SQL 查询看起来本质上是相同的:
>>> print User.objects.filter(id__in=user_ids, creation_time__range=[start_date, end_date]).query
SELECT "users_user"."id", "users_user"."uuid", "users_user"."creation_time", "users_user"."ip", "users_user"."user_agent", "users_user"."hash", "users_user"."creation_date", "users_user"."is_bot" FROM "users_user" WHERE ("users_user"."id" IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) AND "users_user"."creation_time" BETWEEN 2017-07-18 00:00:00 AND 2017-07-19 00:00:00)
>>> print User.objects.filter(id__in=user_ids, creation_date__range=[start_date, end_date]).query
SELECT "users_user"."id", "users_user"."uuid", …Run Code Online (Sandbox Code Playgroud) 我正在heroku上主持一个django项目,它将应用程序总大小限制为300MB,并且我有很多静态资产要服务.因为django"collectstatic"将所有静态资产复制到另一个目录,我超过了这个限制.
现在我知道正确的方法是从外部文件存储服务(如亚马逊S3存储桶)提供静态资产,但我有我的理由为什么我不想使用外部存储服务,而这是因为题.
所以我问这个:如何使用django直接从原始文件夹提供静态资源而不将它们复制到另一个目的地?
谢谢!
django ×7
python ×5
forms ×1
git ×1
heroku ×1
image ×1
javascript ×1
postgresql ×1
python-2.7 ×1
stdout ×1