>백엔드 개발 >파이썬 튜토리얼 >Django의 ORM을 사용하여 .update() 메서드를 사용하여 JsonField의 여러 키 값을 업데이트하는 방법은 무엇입니까?

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

WBOY
WBOY앞으로
2024-02-06 09:48:121044검색

如何使用 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으로 문의하시기 바랍니다. 삭제