728x90
반응형
질문 : django OneToOneField와 ForeignKey의 차이점은 무엇입니까?
OneToOneField
와 ForeignKey
의 차이점은 무엇입니까?
답변
OneToOneField(SomeModel)
과 ForeignKey(SomeModel, unique=True)
사이에 약간의 차이가 있다는 것을 알아 두십시오. The Definitive Guide to Django 에서 언급했듯이 :
OneToOneField
일대일 관계. 개념적으로 이것은 unique=True
ForeignKey
와 유사하지만 관계의 "reverse"쪽은 단일 객체를 직접 반환합니다.
OneToOneField
"reverse"관계와 달리 ForeignKey
"reverse"관계는 QuerySet
반환합니다.
예를 들어 다음 두 가지 모델이있는 경우 (아래 전체 모델 코드) :
python manage.py shell
내에서 다음을 실행합니다.
OneToOneField Example
>>> from testapp.models import Car, Engine
>>> c = Car.objects.get(name='Audi')
>>> e = Engine.objects.get(name='Diesel')
>>> e.car
<Car: Audi>
ForeignKey with unique=True Example
>>> from testapp.models import Car2, Engine2
>>> c2 = Car2.objects.get(name='Mazda')
>>> e2 = Engine2.objects.get(name='Wankel')
>>> e2.car2_set.all()
[<Car2: Mazda>]
Model Code
from django.db import models
class Engine(models.Model):
name = models.CharField(max_length=25)
def __unicode__(self):
return self.name
class Car(models.Model):
name = models.CharField(max_length=25)
engine = models.OneToOneField(Engine)
def __unicode__(self):
return self.name
class Engine2(models.Model):
name = models.CharField(max_length=25)
def __unicode__(self):
return self.name
class Car2(models.Model):
name = models.CharField(max_length=25)
engine = models.ForeignKey(Engine2, unique=True, on_delete=models.CASCADE)
def __unicode__(self):
return self.name
출처 : https://stackoverflow.com/questions/5870537/whats-the-difference-between-django-onetoonefield-and-foreignkey
728x90
반응형
'개발관련 > other' 카테고리의 다른 글
Error - Unable to access the IIS metabase (0) | 2021.12.14 |
---|---|
Bash 스크립트에서 사용자에게 확인을 요청하는 방법 (0) | 2021.12.12 |
Swift에서 배열을 연결하거나 병합하는 방법 (0) | 2021.12.11 |
OpenSSL을 사용하여 자체 서명 된 SSL 인증서를 생성하는 방법 (0) | 2021.12.11 |
npm package.json 파일의 종속성, devDependencies 및 peerDependencies의 차이점 (0) | 2021.12.10 |