簡體   English   中英

如何通過動態查詢比較表的2列

[英]How to compare 2 columns of a table through dynamic querying

在動態查詢中有一個要求,我想比較表的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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM