小编Ron*_*ess的帖子

django恢复上次迁移

我已经进行了迁移,添加了一个新表,并希望还原它并删除迁移,而不创建新的迁移.

我该怎么做?是否有恢复上次迁移的命令,然后我可以删除迁移文件?

django django-migrations

394
推荐指数
10
解决办法
16万
查看次数

Heroku推送拒绝,无法与供应商沟通,请稍后再试

我试图为我的第一个应用程序第一次推入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%罚款.

有任何想法吗?在帮助中心找不到任何东西.

谢谢!

git django heroku

8
推荐指数
1
解决办法
3437
查看次数

django db_index 用于外键反向查找

我读过 django 会为所有外键自动创建 db_index 。但是,db_index 是否也提高了反向查找的性能?

例如,如果 B 有 A 的外键并且我使用 a.b_set.all(),我是否喜欢 db 索引带来的性能提升?

如果没有,有没有办法使用 db 索引使外键反向查找更快?

谢谢,

python django django-models django-filter

7
推荐指数
1
解决办法
946
查看次数

python - 防止IOError:[Errno 5]在没有stdout的情况下运行时输入/输出错误

我有一个脚本通过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)

但它都不起作用.我认为它只会影响模块本身,而不会影响我以后导入/运行的模块.

那么如何创建一个会影响流程中所有模块的存根标准输出?就像我说的,我不想更改从主模块执行的脚本,但我可以更改导入模块中的所有内容.只是为了清除 - 一切都是进口的,没有新的流程产生等.

谢谢,

python stdout python-2.7

7
推荐指数
1
解决办法
7280
查看次数

将JavaScript生成的图像上传到Django

我在客户端生成了一个图像,我想通过表单传输到服务器.例如,假设我有一个注册表单,其中配置文件图像是由JavaScript自动生成的,我想将该图像传输到django.

当用户点击提交按钮时,将图像二进制数据传输到服务器的最佳方法是什么?我应该使用什么形式的字段?

谢谢!

javascript forms django image

6
推荐指数
1
解决办法
2066
查看次数

django annotate - 条件计数

我有一个名为'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,而我希望它迭代指向商店项目的所有报价项目并计算它们,如果它们与条件匹配(单独).

我该如何实现?

python django django-models django-filter django-annotate

6
推荐指数
1
解决办法
2541
查看次数

Django:按带有 db_index 的 DateField 进行过滤比按不带 db_index 的 DateTimeField 进行过滤要慢很多

在我的模型之一中,我有以下字段:

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)

python django postgresql django-models

5
推荐指数
0
解决办法
1214
查看次数

django:提供静态资产*而不*复制它们(收集静态)

我正在heroku上主持一个django项目,它将应用程序总大小限制为300MB,并且我有很多静态资产要服务.因为django"collectstatic"将所有静态资产复制到另一个目录,我超过了这个限制.

现在我知道正确的方法是从外部文件存储服务(如亚马逊S3存储桶)提供静态资产,但我有我的理由为什么我不想使用外部存储服务,而这是因为题.

所以我问这个:如何使用django直接从原始文件夹提供静态资源而不将它们复制到另一个目的地?

谢谢!

python django

3
推荐指数
1
解决办法
333
查看次数