Django 排除';额外';来自queryset的字段

Django 排除';额外';来自queryset的字段,django,django-models,Django,Django Models,我有一个带有一个“额外”字段的查询集: query_set = data_model.extra(select={'status': '''CASE <sql-query here>''') 我得到一个错误: Cannot resolve keyword 'status' into field. Choices are: <list of field from my models here> 上面的代码不会生成任何异常。因此,如何过滤或排除使用“extra”方法获

我有一个带有一个“额外”字段的查询集:

query_set = data_model.extra(select={'status': '''CASE  <sql-query here>''')
我得到一个错误:

Cannot resolve keyword 'status' into field. Choices are: <list of field from my models 
here>
上面的代码不会生成任何异常。因此,如何过滤或排除使用“extra”方法获得的字段

这是一个非常简单的模型(但有很多字段),但这是我使用的“额外”方法:

qs = qs.extra(select={
    'void_status': '''CASE
        WHEN "orderitem".voided_date IS NULL
            THEN {normal}
        WHEN "orderitem".voided_date >= %s AND
             "orderitem".voided_date < %s AND
             "orderitem".created_date >= %s AND
             "orderitem".created_date < %s
            THEN {fully_voided}
        WHEN "orderitem".voided_date >= %s AND
             "orderitem".voided_date < %s
            THEN {voided}
        ELSE {normal}
    END'''.format(normal=1,
                  voided=2,
                  fully_voided=3)
}, select_params=[start, end] * 3)
qs=qs.extra(选择={
“无效状态”:“案例”
当“orderitem.”作废日期为空时
然后{normal}
当“orderitem”。作废日期>=%s和
“orderitem”。作废的\u日期<%s和
“orderitem”。创建日期>=%s和
“订单项”。创建日期<%s
然后{完全无效}
当“orderitem”。作废日期>=%s和
“orderitem”。作废的\u日期<%s
然后{作废}
ELSE{normal}
结束“”。格式(正常=1,
无效=2,
完全无效=3)
},选择_参数=[start,end]*3)

你能发布你的模型和额外的sql吗?你是说我需要使用qs.extra(其中=[…],参数=[…])之类的东西吗?我已经尝试了这个方法,并得到了DB错误(字段不存在,但这是另一个问题)。非常感谢。
values = query_set.values_list('status')
qs = qs.extra(select={
    'void_status': '''CASE
        WHEN "orderitem".voided_date IS NULL
            THEN {normal}
        WHEN "orderitem".voided_date >= %s AND
             "orderitem".voided_date < %s AND
             "orderitem".created_date >= %s AND
             "orderitem".created_date < %s
            THEN {fully_voided}
        WHEN "orderitem".voided_date >= %s AND
             "orderitem".voided_date < %s
            THEN {voided}
        ELSE {normal}
    END'''.format(normal=1,
                  voided=2,
                  fully_voided=3)
}, select_params=[start, end] * 3)