小编Ste*_*yer的帖子

Django Admin中的动态字段

我想要有关于一个字段值的其他字段.因此,我构建了一个自定义管理表单来添加一些新字段.

与jacobian 1的博客相关,这是我想出的:

class ProductAdminForm(forms.ModelForm):
    class Meta:
        model = Product

    def __init__(self, *args, **kwargs):
        super(ProductAdminForm, self).__init__(*args, **kwargs)
        self.fields['foo'] = forms.IntegerField(label="foo")

class ProductAdmin(admin.ModelAdmin):
    form = ProductAdminForm

admin.site.register(Product, ProductAdmin)
Run Code Online (Sandbox Code Playgroud)

但附加字段'foo'不会显示在管理员中.如果我添加这样的字段,一切正常,但不如所需的动态,添加关于模型的另一个字段的值的字段

class ProductAdminForm(forms.ModelForm):

    foo = forms.IntegerField(label="foo")

    class Meta:
        model = Product

class ProductAdmin(admin.ModelAdmin):
    form = ProductAdminForm

admin.site.register(Product, ProductAdmin)
Run Code Online (Sandbox Code Playgroud)

那么有什么初始化方法我必须再次触发以使新字段工作?或者还有其他尝试吗?

forms django admin dynamic

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

_.pick for collections(下划线/ lodash)

是否有一个lodash函数,您可以通过仅选择指定的属性来创建另一个集合?

stats = [{a:1, b:1}, {a:2, b:2}]
reducedStats = _.pick(stats, 'a'); // now is [{a:1},{a:2}]
Run Code Online (Sandbox Code Playgroud)

正常pick仅适用于对象,不适用于集合.

我实现了它

stats = stats.map(_.partialRight(_.pick, 'a'));
Run Code Online (Sandbox Code Playgroud)

这有点冗长.

underscore.js lodash

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

将Socket.io流连接到节点repl流

我用socket.io创建了一个快速应用程序.现在我想要一个浏览器终端与我在节点中创建的repl连接.这就是我想出的

var io = io.listen(server);
var sessionSockets = new SessionSockets(io, sessionStore, cookieParser);

sessionSockets.on('connection', function (err, socket, session) {
  var stream = createStream(socket);
  var replInstance = repl.start({
    prompt: "> ",
    input: stream,
    output: stream
  });
  repls[socket.id] = replInstance;
});

var createStream = function(socket) {
  var stream = new Stream();
  stream.readable = true;
  stream.resume = function() {};

  stream.write = function(data) {
    socket.emit('stdout', data);
  };

  socket.on('stdin', function(data) {
    // emit data to repl stream - DOES NOT WORK
    stream.emit('data', data);
  });

  return stream; …
Run Code Online (Sandbox Code Playgroud)

sockets node.js socket.io

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

如果在弹性搜索中选择阵列字段的另一个聚合选项,如何获取将添加的文档的数量

假设我们有四个带有tags字段的文档.它可以包含多个字符串,比方说foo,barbaz.

docA.tags = ['foo']
docB.tags = ['bar']
docC.tags = ['foo', 'bar']
docD.tags = ['foo', 'baz']
Run Code Online (Sandbox Code Playgroud)

我使用聚合查询文档,因此我获得了四个文档和三个桶的列表,其中包含与特定标记匹配的计数.

buckets = [
  {key: 'bar', doc_count: 2}, // docB, docC
  {key: 'foo', doc_count: 3}, // docA, docC, docD
  {key: 'baz', doc_count: 1}  // docD
]
Run Code Online (Sandbox Code Playgroud)

如果我现在运行另一个查询,并添加这些标签中的一个-让说foo-作为一个条件过滤器来查询,我只得到了文档(docA,docC,docD有此标记).这就是我想要的.

但我还得到了另一个可能的聚合列表,其中包含更新的计数.

buckets = [
  {key: 'bar', doc_count: 1}, // docC
  {key: 'baz', doc_count: 1}, // docD
]
Run Code Online (Sandbox Code Playgroud)

但这些计数与发生的事情并不完全一致.它们反映了与两个标签匹配的文档数,即我在第一个位置选择的标签(foo)和一个标签(bar或 …

search elasticsearch

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