Django의 ORM을 사용하여 .update() 메서드를 사용하여 JsonField의 여러 키 값을 업데이트하는 방법은 무엇입니까?

WBOY
풀어 주다: 2024-02-06 09:48:12
앞으로
977명이 탐색했습니다.

如何使用 Django 的 ORM 使用 .update() 方法更新 JsonField 中多个键的值?

질문 내용

django의 .update() 方法进行更新。该字段是一个 jsonfield。我通常会在这个领域保存一本字典。例如{"test": "是", "prod": "否"}

에서 사용하려는 모델 필드가 있습니다.

모델은 다음과 같습니다:

으아악

다음 쿼리를 사용하여 사전 내부의 키를 업데이트할 수 있습니다(이것은 훌륭하게 작동합니다):

으아악

이제 질문은 위 쿼리에 표시된 대로 .update()를 사용하여 여러 키(내 경우에는 2개)를 한 번에 업데이트할 수 있는 방법이 있습니까?

post_save 신호 함수 호출을 피할 수 있도록 .save() 대신 .update() 方法而不是 .save() 메서드를 사용하고 싶습니다.


정답


면책조항: 보기 흉해 보일 것입니다.

저는 과거에 Django가 아닌 순수 SQL을 사용했지만 이 작업을 수행한 적이 있습니다. 아이디어는 재귀적으로 호출하는 것입니다 jsonb_set(). 각 호출은 키를 설정합니다.

SQL에서 키를 설정하려면 {"test":"yes","prod":"no"} 다음을 수행하세요.

으아악

jsonb_set에는 두 개의 중첩 호출이 있으며 가장 안쪽 호출이 사용되고 meta_data 가장 바깥쪽 호출이 가장 안쪽 결과를 받습니다.

그래서 django와 동등한 것은 다음과 같습니다(참고, 테스트되지 않음):

으아악

또는 한 번에 하나의 항목을 설정하여 엉망진창을 반환하는 재귀 함수를 만들 수도 있습니다.

으아악

어린이를 업데이트하는 '__' 기능을 참고하세요.

위 내용은 Django의 ORM을 사용하여 .update() 메서드를 사용하여 JsonField의 여러 키 값을 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!