>  기사  >  데이터 베이스  >  제한 사항에 직면했을 때 Django의 다양한 데이터베이스에 외래 키를 어떻게 구현합니까?

제한 사항에 직면했을 때 Django의 다양한 데이터베이스에 외래 키를 어떻게 구현합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-29 15:03:02933검색

How do I implement Foreign Keys across different databases in Django when facing limitations?

Django에서 서로 다른 데이터베이스에 걸쳐 외래 키를 구현하는 방법

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.