在其中一個django應用程序中,我們使用兩個數據庫引擎A和B,它們都是相同的數據庫,但具有不同的模式。我們在兩個模式中都有一個名爲C的表,但是使用數據庫路由時,它總是指向數據庫B.我們已經從A中的一個模型形成了一個值列表查詢集,試圖在表C中使用過濾條件__in
傳遞相同的值,但是它雖然有匹配的記錄,但總是提取空。當我們將valueslist queryset轉換爲列表並使用過濾器條件__in
在表C中使用它時,它工作正常。django valueslist跨數據庫引擎的查詢集
不工作
data = modelindbA.objects.values_list('somecolumn',flat=True)
info = C.objects.filter(somecolumn__in=data).values_list
工作
data = modelindbA.objects.values_list('somecolumn',flat=True)
data = list(data)
info = C.objects.filter(somecolumn__in=data).values_list
我已閱讀Django文檔和其他SO問題,找不到任何東西相對。我的猜測是,因爲這兩個模型是在不同的數據庫模式,上述不起作用。我需要關於如何解決此問題的幫助。
謝謝凱文。我也嘗試過這種方式,但它沒有; t解決困惑我更多:( data = list('somecolumn',flat = True)) info = C.objects.filter(somecolumn__in =數據).values_list 我期待這個工作,因爲在使用列表數據庫命中將被迫,那裏的價值將已經進入數據對象,但即使這樣做不成功,你可以請一些洞察這個奇怪的行爲,非常感謝你的信息 – Giri
@Giri:我很困惑,在你的問題中,你說的方法是「Working」。 –
Kevin我的意思是將valueslist queryset轉換爲列表並在另一個數據庫作品中查詢模型我的疑問是:
data = list(modelindbA.objects.values_list('somecolumn',flat = True))。通過使用上面的「list」,會有一個立即數據庫命中,值將是f從模型中蝕刻出來,並將變成可變的「數據」。現在如果我通過
info = C.objects.filter(somecolumn__in = data)使用這個「數據」變量。values_list,因爲對象現在已經存在於「數據」變量中,所以我期待這樣做。 – Giri