Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 파이썬
- python
- Django
- linux
- 도커컴포즈
- customize
- iterm2 shortcuts
- minikube mac 설치
- 빅오노테이션
- DynamoDB
- sftp란
- 컨테이너
- server
- docker
- minikube 설치 방법
- zshrc
- BIG-O NOTATION
- 테라폼 기본 문법
- Shell
- zsh
- 도커
- AWS
- iterm2 단축키
- test
- Bash
- 테라폼 문법
- nosql
- terraform 문법
- docker-compose
- terraform
Archives
- Today
- Total
sklass의 s-class 프로그래밍 blog
[Django] _set - 테이블의 키를 외래키로 갖는 테이블에 대한 함수 본문
아래와 같은 테이블 스키마가 있다고 가정해봅시다.
class Shop(models.Model):
shop_name = models.CharField(max_length=20)
shop_address = models.CharField(max_length=40)
class Order(models.Model):
shop = models.ForeignKey(Shop, on_delete=models.CASCADE)
order_date = models.DateTimeField("date ordered")
address = models.CharField(max_length=40)
estimated_time = models.IntegerField(default=-1)
deliver_finish = models.BooleanField(default=0)
Order 테이블은 Shop을 외래키로 해서 생성되는 테이블입니다.
그렇다면, Shop 아이템을 생성하고, 생성된 Shop 아이템의 키를 외래키로 하는 Order 아이템을 생성하기 위해서는 어떻게 해야할까요?
물론 Shop 아이템의 키를 리턴한다음, Order 아이템의 값들을 Order 오브젝트에 넣어준 후, save() 해야합니다.
이런 일련의 과정을 한번에 해주는 것이 바로, <table_name>_set.create() 입니다. 아래의 예제를 살펴보겠습니다.
shop_item = Shop.objects.get(pk=1)
shop_item.order_set.create(address=address, order_date=order_date)
위의 예제에서 보면, Shop 아이템의 키를 외래키로 하는 Order 아이템을 생성해야하기 때문에 shop_item.order_set.create()을 이용했습니다. 위의 코드가 실행되면, Shop 아이템의 키를 자동으로 받아와, Order 아이템의 외래키로 넣어주게 됩니다.
_set을 이용한 예제를 하나 더 살펴보겠습니다.
<table_name>_set.create()을 이용해서 Order 테이블에 Shop 을 외래키로 하는 아이템을 하나 생성하였습니다. 이를 나열해서 보고싶다면, 아래와 같이 _set.all() 함수를 이용하면 됩니다.
shop_item = Shop.objects.get(pk=1)
shop_item.order_set.all()
>>> <QuerySet [<Order: Order object (1)>]>
'django' 카테고리의 다른 글
[Django] EC2에 앱 배포 후, SSH 이 끊어져도 서버가 계속 실행되도록 하는 방법 (0) | 2021.12.04 |
---|---|
[Django] model의 데이터를 가져오는 get()과 filter()의 차이 (0) | 2021.12.03 |
[django] drf의 request.data.get() (0) | 2021.10.22 |
[Django] unittest @tag (0) | 2021.09.11 |
[Django] test 명령어 argument customize (0) | 2021.09.11 |