我正在尝试更改树中节点的顺序.一切正常,但我想知道是否有一些美丽,简单的方法来更新多个字段,通过增加其实际值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)
那么......有类似的东西吗?通过谷歌搜索没有任何东西出现在我的脑海或我的屏幕上.
谢谢你!
我正在尝试在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的模块按预期工作.
可能重复(没有接受的答案)
我正在尝试将文件从Angular 4应用程序上传到JSON API服务,该服务接受base64字符串作为文件内容.
所以我所做的是 - 用文件读取FileReader.readAsDataURL,然后当用户确认上传时,我将向API创建一个JSON请求并发送base64我之前获得的文件的字符串.
这就是问题开始的地方 - 只要我对"内容"(记录,发送,w/e)执行某些操作,请求将被发送,但其速度非常慢,例如20MB的2MB文件.
我试过了:
ArrayBuffer并手动将其转换为base64@angular/common但是一切都会导致相同的结果.
我知道问题所在.但为什么会这样呢?是浏览器特定的还是角度特定的?是否有更优选的方法(请记住它必须是base64字符串)?
笔记:
码:
当用户将文件添加到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) 我正在尝试创建面向对象的表单生成器.请记住,它只能由我们公司的少数人使用来解决特定问题.
我目前正面临两个小问题.
创建元素的语法
我可以采取的方法很少.
在构造函数中设置所有内容 作为缺点,这可能导致不一致的构造函数使用
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模式,这可能导致没有自动完成支持.当使用第二种方法时,这将部分地减轻.
那么对于我的实际问题:
哪种方法最适合?(适用于最小代码重复,固体代码重用和易于实现)
我意识到这可能会很好地产生基于意见的答案,所以如果有的话,我会事先道歉.
我在我的模板中使用"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请求?或者我是否需要创建一个过滤器,将其添加到那里?
任何帮助表示赞赏
问候