반응형
https://www.pythontutorial.net/django-tutorial/django-one-to-one/
Django One-To-One Relationship By Practical Examples
In this tutorial, you'll learn about Django one-to-one relationship and how it works under the hood.
www.pythontutorial.net
1:1 매칭되는 테이블 연결 만들어보기
1. Contact 모델 생성 후 Employee 모델에 추가
Employee 한명당 하나씩 연결될 Contact 모델을 만들어서 추가한다.
- OneToOneField(Model_Class_name, 조건 )
- on_delete -> Employee데이터가 삭제 됐을 때, contact 데이터를 유지할 지 여부
- null = True -> contact 데이터가 없어도 employee 데이터 생성 할 수 있음
## 모델 생성
class Contact(models.Model):
phone = models.CharField(max_length=50, unique=True)
address = models.CharField(max_length=50)
def __str__(self):
return self.phone
class Employee(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
## 연결 추가 ##
contact = models.OneToOneField(Contact, on_delete=models.CASCADE, null=True)
def __str__(self):
return f'{self.first_name} {self.last_name}'
+ 마이그레이션 다시 해주기
2. shell 에서 데이터 확인
shell 다시 열어줘야함
python manage.py shell_plus --print-sql
# contatct 연결해 줄 객체 선택
e = Employee.objects.get(id=3)
# contact 객체 생성
c = Contatct(phone ='01012345678' , address = 'seoul')
# 객체 연결
e.contact = c
# 연결된 객체 정보 확인하기
# contact return 값
e.contact
# contact의 address 에 접근
e.contact.address
# 반대로 c에서 employee에 접근
c.employee
[결과 화면 참고]
반응형
'Today I Learned > django' 카테고리의 다른 글
(장고) ORM tutorial #4. ManyToManyField() (0) | 2023.08.21 |
---|---|
(장고) ORM tutorial #3. OneToMany, ForeignKey() (0) | 2023.08.21 |
(장고) ORM tutorial #1. all(), get() , filter(), save(), delete() (0) | 2023.08.21 |
장고 (django) - LoginView, LogoutView, LoginRequireMixin 설정하기 (0) | 2023.08.11 |
장고 generic editing views , createView (0) | 2023.08.04 |