django filter values 别名(alias)
方法一:
在values中使用 django.db.models.F 进行重命名,注意 不需要重命名的参数需要放前面
orders = Order.objects.filter(
...
).values(
'xxxx',
transaction_id=F('orderdetails__transaction_id'),
time_end=F('orderdetails__time_end'),
)
方法二:
使用annotate + F进行重命名,在values中直接使用新的命名即可
orders = Order.objects.filter(
...
).annotate(
transaction_id=F('orderdetails__transaction_id'),
time_end=F('orderdetails__time_end'),
).values(
'transaction_id',
'time_end',
)
django F 连接字符
使用 django.db.models.functions.Concat 方法进行数据库字段的连接
orders = Order.objects.filter(
...
).values(
...
org_name=Concat(
F('student__org__parent__parent__name'),
F('student__org__parent__name'),
F('student__org__name')
),
)