簡體   English   中英

如何從 django 中的相關 model 快速更新字段

[英]How to fastly update field from a related model in django

我想使用 Django 查詢集使用相關記錄中的值更新幾百萬條記錄,但我陷入了困境

django.core.exceptions.FieldError: Joined field references are not permitted in this query

在我使用Subquery之前,它太慢了。

我想要的只是執行這個簡單的查詢,但找不到與之等效的查詢集,所以我不得不用原始的 SQL 來 go。

update card_cardtransaction
set clearing_date = api_invoice.date_activated
from card_cardtransaction ct join api_invoice
                               on ct.invoice_id = api_invoice.id
where ct.date_created > '2022-05-17' and id in %ids

任何想法如何僅使用查詢集方法來編寫此查詢?

這是我能想到的最接近的,但仍然存在上述錯誤。

CardTransaction.objects.filter(id__in=ids)
    .select_related('invoice')
    .update(
        clearing_date=F("invoice__date_activated")
    )

批量更新可能值得一試:

card_transactions = CardTransaction.objects.filter(id__in=ids).select_related('invoice')
cts = []
for ct in cart_transactions:
    ct.clearing_date = ct.invoice.date_activated
    cts.append(ct)
CardTransactions.objects.bulk_update(cts, ['clearing_date'], batch_size=1000)

有關更多信息,請參閱django 文檔

暫無
暫無

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

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