Unable to use Case, When, Then in django queryset(无法使用用例,当,则在Django查询集中)
本文介绍了无法使用用例,当,则在Django查询集中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的型号如下
class Loan(models.Model):
loan_value = models.IntegerField()
channel_seller = models.ForeignKey(ChannelSeller, on_delete=models.CASCADE)
class ChannelSeller(models.Model):
LEVEL_CHOICES = (
('1','Business Consultants'),
('2','Unit Managers'),
('3','Account Managers'),
('4','Branch Managers'),
)
level = models.CharField(max_length=2, choices = LEVEL_CHOICES, null = True, blank = True)
pin_no = models.CharField(max_length=255)
unit_manager = models.ForeignKey('self', limit_choices_to = {"level": '2'}, on_delete=models.DO_NOTHING, null = True, blank = True, related_name='unit_manager_2')
贷款可以由business_Consulting或unit_manager创建。每个业务顾问都将有一个unit_manager,但是unit_manager的unit_manager将为空
说到这里
我正在尝试使用CASE,WHEN,THEN按UNIT_MANAGER字段对查询进行排序,如下所示
transactions = Loan.objects.annotate(unit_manager_pin = Case(When('channel_seller__level' == '2', then='channel_seller_pin_no'), When('channel_seller__level' == '1', then='channel_seller__unit_manager__pin_no'))).filter(channel_seller__level__in = ['1','2']).order_by('channel_seller__level')
但是,此查询引发错误__init__() takes either a Q object or lookups as keyword arguments
dbm
您正在编写要由推荐答案执行的查询。您不能在该上下文中使用Python代码('channel_seller__level' == '2'
)。请参阅conditional expressions上的文档。
请清晰地格式化您的代码!请在括号内使用换行符以继续。
在本例中,您只需将==
更改为=
,但了解原因很重要。When
的参数类似于.filter
的参数。因此,要测试大于,应为When( field__gt = 2, ...)
您还需要使用F
来引用数据库中的值。如果没有F
,它将(可能,不确定)是一个错误。(如果需要固定值,可以使用Value('fixed-value')
)
transactions = Loan.objects.annotate(unit_manager_pin =
Case(When('channel_seller__level' = '2',
then=F('channel_seller_pin_no')),
When('channel_seller__level' = '1',
then=F('channel_seller__unit_manager__pin_no'))
)
).filter(
...
这篇关于无法使用用例,当,则在Django查询集中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:无法使用用例,当,则在Django查询集中


猜你喜欢
- 如何在 Python 的元组列表中对每个元组中的第一个值求和? 2022-01-01
- padding='same' 转换为 PyTorch padding=# 2022-01-01
- 使用Heroku上托管的Selenium登录Instagram时,找不到元素';用户名'; 2022-01-01
- 分析异常:路径不存在:dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data; 2022-01-01
- python check_output 失败,退出状态为 1,但 Popen 适用于相同的命令 2022-01-01
- 如何将一个类的函数分成多个文件? 2022-01-01
- pytorch 中的自适应池是如何工作的? 2022-07-12
- 沿轴计算直方图 2022-01-01
- 如何在 python3 中将 OrderedDict 转换为常规字典 2022-01-01
- python-m http.server 443--使用SSL? 2022-01-01