Django에서 외래 키를 활용하는 것은 저장된 객체 간의 관계를 설정하는 데 중요합니다. 여러 데이터베이스에 걸쳐. 그러나 이 프로세스는 다양한 데이터베이스에 대한 모델이 포함될 때 문제가 될 수 있습니다.
Django는 현재 데이터베이스 간의 외래 키 관계를 금지합니다. 별도의 데이터베이스에 있는 모델. 이 제한은 데이터베이스 간 관계에 대한 지원이 없기 때문에 발생합니다. 모델을 분할하기 위해 데이터베이스 라우터를 사용하는 경우 외래 키 관계는 단일 데이터베이스 내로 제한되어야 합니다.
오류 코드에서 발생하는 문제는 "urls" 데이터베이스의 LinkModel 인스턴스를 기본 데이터베이스의 NewsModel 인스턴스에 할당하려는 시도에서 발생합니다. 이러한 모델은 서로 다른 데이터베이스에 속하므로 Django에서는 이 할당을 방지하는 오류가 발생합니다.
이 제한을 우회하려면 다음을 수행하세요. 사용자 지정 해결 방법을 구현합니다. NewsModel의 링크 필드를 통해 LinkModel 인스턴스를 직접 할당하는 대신 데이터베이스에서 외래 키 필드를 수동으로 설정합니다.
<code class="python">from django.db import connection # Retrieve the LinkModel instance from the database link = LinkModel.objects.using('urls').get(id=1) # Execute a raw SQL query to update the foreign key value in the default database with connection.cursor() as cursor: cursor.execute( "UPDATE news SET link_id = %s WHERE title = %s", [link.id, "test"] )</code>
이 접근 방식은 기본 데이터베이스의 외래 키 값을 수동으로 업데이트하여 뉴스 항목을 효과적으로 연결합니다. 원하는 LinkModel 인스턴스에 추가하세요.
위 내용은 제한 사항에 직면했을 때 Django의 다양한 데이터베이스에 외래 키를 어떻게 구현합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!