我想要有关于一个字段值的其他字段.因此,我构建了一个自定义管理表单来添加一些新字段.
与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)
那么有什么初始化方法我必须再次触发以使新字段工作?或者还有其他尝试吗?
是否有一个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)
这有点冗长.
我用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) 假设我们有四个带有tags字段的文档.它可以包含多个字符串,比方说foo,bar和baz.
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或 …