我之前一直在使用Django的ORM annotate
成功几次,但我遇到了这个具体案例的问题。
当字段tag_to_show
的值与某个正则表达式匹配时,我想要注释一个名为my_tag
的新字段。
这就是我现在所拥有的:
queryset.annotate(tag_to_show=Case(When(my_tag__iregex=pattern,
then=Value("I don't know what to put here")),
output_field=CharField(),
default=Value("Not matched")))
我只是将正则表达式应用于my_tag
字段。如果正则表达式匹配某个对象的my_tag
字段中包含的字符串,我想在名为tag_to_show
的新字段中注释其值。
任何想法在de Value
参数中放置什么?
答案 0 :(得分:1)
我认为你想要的是F() expression
:
queryset.annotate(tag_to_show=Case(
When(my_tag__iregex=pattern, then=F('my_tag')),
output_field=CharField(),
default=Value("Not matched")))
答案 1 :(得分:0)
我认为答案是:
queryset.annotate(tag_to_show=Case(When(my_tag__iregex=pattern,
then='my_tag'),
output_field=CharField(),
default=Value("Not matched")))