python - 如何通过动态查询比较表的 2 列

标签 python mysql django django-queryset

在动态查询中有一个要求,我想比较一个表的 2 列,比如“column_a”和“column_b”(所有列都是字符串)。要比较的实际列在运行时决定。

我正在使用 kwargs 创建字典。但是 Django 假定 RHS 是一个绝对值而不是同一个表的列。使用 F() 是一个选项,但我找不到任何关于在 kwargs 中使用 F() 的文档。

如果我使用 kwargs = {'predicted_value':'actual_value'} 'actual_value' 用作文字字符串而不是列名

我如何使用类似的东西: kwargs = {'predicted_value':F('actual_value')} 并将其作为 Model.objects.filter(**kwargs) 传递

或者,有没有办法在 LHS 中使用 F('column') ? 例如Model.objects.filter(F(column1_name) = F(column2_name))

最佳答案

对于非动态筛选字段,我会使用:

from django.db.models import F

Model.objects.filter(some_col=F(kwargs.get('predicted_value')))

但是如果你需要所有的动态,你可以试试:

kwargs = {'predicted_value':F('actual_value')}
Model.objects.filter(**kwargs)

您甚至可以访问相关字段:

kwargs = {'fk_field__somefield':F('actual_value')}
Model.objects.filter(**kwargs)

关于python - 如何通过动态查询比较表的 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32409545/

相关文章:

python - 在 Django 中更新 Postgres ArrayField

python - 使用 loffset 对 pandas DataFrame 重新采样会引入一个小时的额外偏移量

python - 如何在 python 中找到唯一类别的优先级值?

php - 从数据库绘制 Canvas 文本?

php - 在 Grocery CRUD + Codeigniter 中设置控件的默认值

python - Django 自定义用户模型未显示在管理页面的“身份验证和授权”下

django - 在 Nginx 配置中设置自定义 header 并将其传递给 gunicorn

python - 如何在不影响主图规模的情况下绘制平面?

python - 升级 Ubuntu : python3 install is corrupted

php - 难以在此 PHP foreach 语句中链接正确的 $var 值和数据库行