小编Ben*_*rts的帖子

在Django admin中限制ManyToMany MultipleSelect的查询集

我有一个看起来像这样的模型:

class Event(models.Model):
    event_dates = ManyToManyField("EventDate")
    #...

class EventDate(models.Model):
    event_date = DateField()
    #...
Run Code Online (Sandbox Code Playgroud)

但是,在django管理MultipleSelect表单字段中获取show_dates的显示EventAdmin,我想将查询集限制为不是过去的event_dates.

查询集将类似于:

event_date_queryset = EventDate.objects.filter(event_date__gte = datetime.date.today()) 
Run Code Online (Sandbox Code Playgroud)

但是,我在哪里可以设置此查询集,以便只在该字段中显示非过去的日期?

(我目前没有自定义表单,EventAdmin但很乐意添加一个.)

django django-admin

7
推荐指数
2
解决办法
8381
查看次数

当字符串包含数字+额外字符时,将字符串解析为int

在Python中,我如何/应该将具有数字的字符串,后跟其他字符解析为int?

我试图解决的具体问题是解析包含数字的字符串中的第一个数字,后跟任意数量的其他字符,包括可能是其他数字,我不感兴趣.例如,如果字符串是"12//" I需要得到的12.

python

7
推荐指数
4
解决办法
3175
查看次数

与JSHint相反,Backbone.js"使用新的副作用"吗?

我有一个自包含的Backbone.View实现MainControllerView,可以处理自己(即,没有理由对它进行外部引用.).如果,在我的主要bootstrapper函数中,我会这样做:

$(function() {
  new MainControllerView();
});
Run Code Online (Sandbox Code Playgroud)

JSLint/JSHint抱怨我使用"new for side effects".阅读此警告表示上述内容被视为有臭味的代码.替代方法是不使用new,只是将构造函数作为函数调用,或者将其赋值给变量.但是,MainControllerView()直接调用我的函数而不使用new主干代码中的引发错误,所以这显然不是一个选项.对我来说似乎完全错误,以下是更好的代码:

$(function() {
  var instantGarbage = new MainControllerView();
}); 
Run Code Online (Sandbox Code Playgroud)

事实上,这会引发一个不同的JSLint警告"instantGarbage已定义但从未使用过".显然,如果我这样做,我就会感到危险,如果不这样做,我就会感到危险.那么,是否有一种不同的"正确"方式来处理这类事情?以某种方式创建即时垃圾变量是"更好的代码"替代方案吗?Backbone.js是否以非Crockford批准的方式利用"new"关键字?或者这只是"规则"的例外之一?

javascript jslint backbone.js

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

QUnit,Sinon.js和Backbone单元测试失败:sinon间谍似乎未能检测到Backbone Model事件回调

在以下单元测试代码中:

TestModel = Backbone.Model.extend({
    defaults: {
        'selection': null
    },
    initialize: function() {
      this.on('change:selection', this.doSomething);
    },
    doSomething: function() {
        console.log("Something has been done.");
    }
});

module("Test", {
    setup: function() {
        this.testModel = new TestModel();
    }
});

test("intra-model event bindings", function() {
    this.spy(this.testModel, 'doSomething');
    ok(!this.testModel.doSomething.called);
    this.testModel.doSomething();
    ok(this.testModel.doSomething.calledOnce);
    this.testModel.set('selection','something new');
    ok(this.testModel.doSomething.calledTwice); //this test should past, but fails.  Console shows two "Something has been done" logs.
});
Run Code Online (Sandbox Code Playgroud)

第三个ok失败,即使该函数是从主干事件绑定中有效调用的,如控制台演示的那样.

第3次测试失败 在此输入图像描述

这非常令人沮丧,并且让我对sinon.js是否适合测试我的骨干应用程序感到震惊.我做错了什么,或者这是一个问题,sinon如何检测是否已经调用了某些东西?有解决方法吗?

编辑:这是我的具体例子的解决方案,基于接受答案的猴子补丁方法.虽然它在测试中有几行额外的设置代码,(我不再需要模块功能)但它完成了工作.谢谢,mu is too short

test("intra-model event bindings", function() {
    var that = this;
    var …
Run Code Online (Sandbox Code Playgroud)

javascript qunit backbone.js sinon

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

为什么requirejs试图将'.js'附加到.j插件加载的.jst模板文件?

我对模板文件使用.jst扩展名,并使用requirejs文本加载它们!插入.例如,

define([
  'jquery',
  'backbone',
  'underscore',
  'text!templates/MyView.jst'
],
function($, Backbone, _, templateText) {
  return Backbone.View.extend({
    template: _.template(templateText),
    initialize: function() {

    },
    render: function() {
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

当我在本地测试时,这会起作用.但是,当我在将静态文件部署到AWS(应用程序的动态部分在Heroku上运行)后尝试执行此操作时,它无法加载.jst文件并且似乎试图将.js附加到他们的网址.

供参考,这是我的requirejs配置(来自main.js)

requirejs.config({
  paths: {
    //directories
    plugins: "lib/plugins",

    //libs
    jquery: "lib/jquery/1.7.1/jquery",
    underscore: "lib/underscore/1.3.3/underscore",
    backbone: "lib/backbone/0.9.2/backbone",
    moment: "lib/moment",  // date lib

    //require plugins
    text: "lib/require/plugins/text",
    domReady: "lib/require/plugins/domReady"
  },
  shim: {  //specify all non-AMD javascript files here.
    backbone: {
        deps: ['underscore', 'jquery'],
        exports: 'Backbone'
    },
    underscore: {
        exports: '_'
    },
    moment: {
        exports: 'moment'
    },
    'plugins/jquery.colorbox': …
Run Code Online (Sandbox Code Playgroud)

javascript requirejs

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

在Django中以调试模式关闭缓存

我在一些非常计算和数据库密集的视图上使用memcached视图缓存为我的生产服务器,如下所示:

urlpatterns = ('',
    (r'^foo/(\d{1,2})/$', cache_page(60 * 15)(my_view)),
) 
Run Code Online (Sandbox Code Playgroud)

有没有办法在Settings.py中DEBUG == True时关闭缓存,以便我不必担心缓存的obselete视图输出并可以使用我的IDE的调试器?

django

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

重新映射字典列表中的键名称

什么是pythonic方法将相同键控字典列表中的每个字典键重新映射到不同的键名?例如,

[{'type_id': 6, 'type_name': 'Type 1'}, {'type_id': 12, 'type_name': 'Type 2'}] 
Run Code Online (Sandbox Code Playgroud)

必须变成

[{'type': 6, 'name': 'Type 1'}, {'type': 12, 'name': 'Type 2'}]
Run Code Online (Sandbox Code Playgroud)

(我需要进行转换以匹配我正在处理的API的输出规范.)

python

6
推荐指数
2
解决办法
1315
查看次数

抑制manage.py dumpdata上的警告输出?

我正在使用django的dumpdata和loaddata命令来促进一些数据导出.但是我目前有一些未解决的弃用警告,因此当我将dumpdata的输出写入文件时,警告最终会出现在文件的顶部,我必须每次都手动清理转储文件.有没有办法抑制或避免警告,dumpdata的输出是合法的json,而不必每次都手动删除警告文本?

django

6
推荐指数
2
解决办法
2347
查看次数

使用S3BotoStorage上传到S3的文件最终会导致无效转义的内容类型元数据

FACEPALM UPDATE:事实证明我忘记/忽略了这样一个事实,即我使用来自https://github.com/gtaylor/django-athumb的旧版S3BotoStorage 作为我的默认存储(即使我安装了django-storage).当前版本的django-storages没有遇到这个问题.问题是内容类型标题在击中boto时是unicode,而boto urllib.quoteplus在将其发送到AWS之前使用unicode .这不是Boto的错,因为每个HTTP都必须以某种方式将头转换为非unicode字符串.有关更深入的分析,请参阅https://github.com/boto/boto/issues/1669.

原始问题

我正在使用django_storage的S3BotoStorage和FileField将文件上传到Amazon S3.这是我的领域:

downloadable_file = FileField(max_length=255, upload_to="widgets/filedownloads", verbose_name="file") 
Run Code Online (Sandbox Code Playgroud)

在设置中:

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 
Run Code Online (Sandbox Code Playgroud)

在上传/下载过程中一切正常.

但是,文件存储在我的存储桶中,内容类型不正确.当我查看AWS S3控制台中文件的元数据时,文件的Content-Type显示为"application%2Fpdf"而不是"application/pdf".

转义内容类型

如果你说它无关紧要,那就重要了.谷歌Chrome的内置pdf阅读器将挂在pdf上,内容类型无效,客户端会引起我的注意.

这是通过django-storages/boto上传的文件的示例.如果您正在使用chrome的内置pdf阅读器,我认为它会挂起,就像我和报告此内容的客户一样.如果您使用的是非Chrome浏览器或adobe插件,或者将文件下载到磁盘,您可能会没问题.

如果我通过AWS控制台手动将内容类型元数据更改为'application/pdf'(它提供的标准选项之一),那么就可以了.

我认为这是一个内部错误,boto构建AWS策略文档以上传文件的方式,因为我没有做任何超出标准用法的事情.但是,我已经介绍了boto代码,无法找到它实际逃逸的位置.

有人可以建议一个解决方法,或者引导我查看boto中的违规代码,以便我可以修补它并提交拉取请求吗?

boto == 2.9.5 django-storages == 1.1.8

django amazon-s3 boto django-storage

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

找出Redis数据库中键的最大字符串值大小

我需要查看我们的Redis缓存,看看我们最大存储值的大小.我有Python经验或可以redis-cli直接使用.有没有办法迭代数据库中的所有键,以便我可以检查每个值的大小?

看起来SCAN是迭代键的方式,但我仍在研究如何使用它来获取值的大小并存储最大值.

python redis

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