Django의 OneToOneField() 대 ForeignKey(): 구별 이해
Django는 두 가지 관계형 필드 유형인 OneToOneField()와 ForeignKey(()를 제공합니다. ), 모델 간의 관계를 설정합니다. 최적의 모델 설계를 위해서는 이러한 두 필드 유형 간의 주요 차이점을 이해하는 것이 중요합니다.
OneToOneField():
OneToOneField()는 두 필드 유형 간의 일대일 관계를 정의합니다. 두 모델은 한 모델의 인스턴스가 다른 모델의 단일 인스턴스에만 관련될 수 있음을 의미합니다. Unique=True인 ForeignKey()와 유사하게 OneToOneField()는 관계의 고유성을 보장합니다. 그러나 OneToOneField() 관계의 "역" 측은 다른 모델의 단일 관련 객체를 직접 반환합니다.
ForeignKey():
ForeignKey()는 모델 간의 다대일 관계로, 한 모델의 여러 인스턴스를 다른 모델의 단일 인스턴스와 연결할 수 있습니다. OneToOneField()와 마찬가지로 Unique=True를 지정하면 ForeignKey()가 관계의 고유성을 강화합니다. OneToOneField()와 달리 ForeignKey() 관계의 "역" 측은 단일 개체가 아닌 QuerySet을 반환합니다.
예:
두 가지 모델 예를 고려해보세요.
Python prepare.py 셸에서 다음 명령을 실행하면 관계 동작의 차이점을 확인할 수 있습니다.
OneToOneField 예:
>>> from testapp.models import Car, Engine >>> c = Car.objects.get(name='Audi') >>> e = Engine.objects.get(name='Diesel') >>> e.car <Car: Audi>
Unique=True인 ForeignKey 예:
>>> from testapp.models import Car2, Engine2 >>> c2 = Car2.objects.get(name='Mazda') >>> e2 = Engine2.objects.get(name='Wankel') >>> e2.car2_set.all() [<Car2: Mazda>]
OneToOneField() 예에서 "역방향" 관련 객체(e.car)에 액세스하면 단일 Car 인스턴스를 검색하는 반면 ForeignKey( ) 예를 들어, "역방향" 관련 QuerySet(e2.car2_set.all())에 액세스하면 연관된 모든 Car2 인스턴스가 반환됩니다.
이러한 차이점을 이해하면 개발자는 내부의 특정 관계 요구 사항에 따라 적절한 관계형 필드 유형을 선택할 수 있습니다. Django 모델을 사용합니다.
위 내용은 Django에서 OneToOneField()와 ForeignKey()의 차이점은 무엇이며, 역관계는 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!