小编Luk*_*kor的帖子

覆盖查询集中注释中的字段

我有一个 Django 模型,其中包含字段name(字符串)和value(整数)。假设我需要返回一个 {name:..., value:...} 对象的查询集,每个值加倍。我现在想做的是:

queryset.annotate(value=F('value') * 2)
Run Code Online (Sandbox Code Playgroud)

然而,django 告诉我该字段value已经存在。

我还尝试使用额外的:

queryset.annotate(value_double=F('value') * 2).extra(select={'value': 'value_double'})
Run Code Online (Sandbox Code Playgroud)

但这也不起作用,因为value_double这不是一个有效的字段。

当然,在这种情况下我可以使用类似的东西queryset.extra(select={'value': 'value * 2'}),但我还有一些其他更复杂的情况,涉及很多函数,我真的不想编写sql,但我宁愿在django中找到解决方案。同样,在我的所有情况下,annotate只要我给结果一个新名称,就可以完美地工作。

django

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

Typescript返回类型取决于参数

我正在尝试编写一个函数,该函数接受boolean类型的参数并根据输入的值返回两种类型之一。我发现了两种方法:

function dependsOnParameter<B extends boolean>(x: B): B extends true ? number : string {
    if (x) {
        return 3;
    } else {
        return "string";
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,TypeScript说 Type '3'/'"string"' is not assignable to type 'B extends true ? number : string'.

我的其他方法如下所示:

function dependsOnParameter(x: true): number;
function dependsOnParameter(x: false): string;
function dependsOnParameter(x: boolean): number | string {
    if (x) {
        return 3;
    } else {
        return "string";
    }
}
Run Code Online (Sandbox Code Playgroud)

这样编译;但是,如果我尝试使用我的函数:

function calling(x: boolean) {
    dependsOnParameter(x);
}
Run Code Online (Sandbox Code Playgroud)

我懂了Argument of type …

typing typescript

4
推荐指数
2
解决办法
1918
查看次数

标签 统计

django ×1

typescript ×1

typing ×1