小编rea*_*dow的帖子

Django queryset update字段增加/减少其当前值

我正在尝试更改树中节点的顺序.一切正常,但我想知道是否有一些美丽,简单的方法来更新多个字段,通过增加其实际值1.我举例说明.

Objtree.objects.select_related().filter(pk__in = ids).update(sort_order = 1)
Run Code Online (Sandbox Code Playgroud)

此代码会将每个sort_order列值更改为1,但我想将其更改为:

Objtree.objects.select_related().filter(pk__in = ids).update(sort_order += 1)
# or
Objtree.objects.select_related().filter(pk__in = ids).update(self.sort_order = 1)
Run Code Online (Sandbox Code Playgroud)

那么......有类似的东西吗?通过谷歌搜索没有任何东西出现在我的脑海或我的屏幕上.

谢谢你!

django django-queryset

15
推荐指数
1
解决办法
7672
查看次数

Pymongo - 尾随oplog

我正在尝试在mongo的oplog集合上实现pub/sub.提供的代码工作,没有 tailable = True选项设置(它将返回所有文档),但是一旦我将它传递给光标它就不会拾取任何东西(即使在所需的集合中进行了更改).

我正在使用pymongo 2.7.2

while(True):
    with self.database.connect() as connection:
        cursor = connection['local'].oplog.rs.find(
            {'ns': self.collection},
            await_data = True,
            tailable = True
        )

        cursor.add_option(_QUERY_OPTIONS['oplog_replay'])

        while cursor.alive:
            try:
                doc = cursor.next()

                print doc
            except(AutoReconnect, StopIteration):
                time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

我尝试了很少的解决方案,但是只要添加了tailable选项,它仍然会失败.Oplog设置正确,因为mongo-oplog来自nodejs的模块按预期工作.

可能重复(没有接受的答案)

python mongodb pymongo

11
推荐指数
1
解决办法
1901
查看次数

Angular - 将文件上传为base64

我正在尝试将文件从Angular 4应用程序上传到JSON API服务,该服务接受base64字符串作为文件内容.

所以我所做的是 - 用文件读取FileReader.readAsDataURL,然后当用户确认上传时,我将向API创建一个JSON请求并发送base64我之前获得的文件的字符串.

这就是问题开始的地方 - 只要我对"内容"(记录,发送,w/e)执行某些操作,请求将被发送,但其速度非常慢,例如20MB的2MB文件.

我试过了:

  • 使用ArrayBuffer并手动将其转换为base64
  • 将base64字符串存储在HTML中并稍后检索
  • 用户点击上传按钮后读取文件
  • 使用旧客户端 @angular/common
  • 使用普通的XHR请求

但是一切都会导致相同的结果.

我知道问题所在.但为什么会这样呢?是浏览器特定的还是角度特定的?是否有更优选的方法(请记住它必须是base64字符串)?


笔记:

  • 更改API中的任何内容都超出了我的控制范围
  • API很好,通过postman发送任何文件将立即完成

码:

当用户将文件添加到dropzone时,此方法将运行:

public onFileChange(files: File[]) : void {
    files.forEach((file: File, index: number) => {
        const reader = new FileReader;

        // UploadedFile is just a simple model that contains filename, size, type and later base64 content
        this.uploadedFiles[index] = new UploadedFile(file);

        //region reader.onprogress
        reader.onprogress = (event: ProgressEvent) => {
            if (event.lengthComputable) …
Run Code Online (Sandbox Code Playgroud)

rest base64 json file-upload angular

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

PHP面向对象的表单生成器

我正在尝试创建面向对象的表单生成器.请记住,它只能由我们公司的少数人使用来解决特定问题.

我目前正面临两个小问题.

创建元素的语法

我可以采取的方法很少.

在构造函数中设置所有内容 作为缺点,这可能导致不一致的构造函数使用

Input::create('text', 'name', array('maxlength' => 10));
Run Code Online (Sandbox Code Playgroud)

限制构造函数键入并仅将最常用的属性公开为方法(保留一个方法进行质量属性设置)

Input::create('text')->name('name')->value('value')->attribute('max_length', 10);
Run Code Online (Sandbox Code Playgroud)

将每个属性公开为方法,为每个属性创建一个方法,或者使用__call魔术方法,这将导致IDE中没有自动完成支持.即使是现在,我仍然可以保留这种attribute方法.

Input::create()->type('text')->name('name')->value('value')->max_length(10)->id('id'); //etc.
Run Code Online (Sandbox Code Playgroud)

目前,我认为第二种方法是最好的方法,因为它保留了两个世界的"好"东西.仍然提供了一种抽象一些工作的方法,因为例如方法required不仅会设置所需的属性,还会根据需要将此字段标记为验证对象.

方法2和3的代码重复

由于每个元素都可以使用属性,但也只有3或4个元素可以使用的属性,例如HTML5属性form.

每个元素都可以从base元素继承,该元素具有对每个元素都是通用的属性的方法(例如name).部分可用的属性可以通过接口解决,但这会导致代码重复,因为它们不能包含方法体.

特性将是解决方案,但遗憾的是,我陷入了PHP 5.3而无法升级.这使我无法实现Mixin或Composition模式,这可能导致没有自动完成支持.当使用第二种方法时,这将部分地减轻.

那么对于我的实际问题:

哪种方法最适合?(适用于最小代码重复,固体代码重用和易于实现)

我意识到这可能会很好地产生基于意见的答案,所以如果有的话,我会事先道歉.

php oop design-patterns

5
推荐指数
1
解决办法
788
查看次数

Django url并在模板中请求GET

我在我的模板中使用"url"标签,一切正常,但我无法捕捉到它背后的任何内容.由于我在该页面上有多个过滤器,通过URL中的GET请求保存,我需要能够将它们添加到它.会发生什么,当我选择一个过滤器url将更改为某个/ url /?f = 1,然后当我选择另一个过滤器时,前一个过滤器将被覆盖,因为url只是一些/ url而没有请求.

这是来自urls.py的一段:

url('^products/$', products_list, name = 'products_list'),
Run Code Online (Sandbox Code Playgroud)

反正有没有修改它,所以url标签将捕获GET请求?或者我是否需要创建一个过滤器,将其添加到那里?

任何帮助表示赞赏

问候

django url templates

4
推荐指数
1
解决办法
1521
查看次数