get_or_create() 메소드는 Django에서 제공하는 기능 중 하나로, 주어진 조건에 맞는 instance를 조회하거나 조건에 맞을 때 새로운 instance를 생성하여 리턴하는 메소드이다.
get_or_create() 메소드는 두 개의 반환값을 갖습니다. 첫 번째는 주어진 조건에 맞는 instance이며, 두 번째 반환값은 instance를 생성한 여부를 나타내며, boolean 형태로 리턴된.
예를 들어서 하나의 모델이 있을 경우를 가정했을 때
class Article(models.Model):
title = models.CharField(max_length=100)
user = models.CharField(max_length=50)
published_date = models.DateTimeField(auto_now_add=True)
article, created = Article.objects.get_or_create(
title='Django Tutorial',
user='kyuparfum',
)
이렇게 작성하면, 제목(title)이 'Django Tutorial'이고, 작성자(user)가 'kyuparfum'인 Article 모델 객체를 반환한다. 이 모델 객체가 이미 데이터베이스에 저장되어 있다면 해당 객체가 article 변수에 할당되고, created 변수는 False가 된다. 하지만, 이 모델 객체가 데이터베이스에 존재하지 않는다면 새로운 Article 모델 객체가 생성되어 해당 객체가 article 변수에 할당되고, created 변수는 True가 된다.
아래 2개는 위의 추가예시이다.
# 제목이 'Python GGultips' 이고 작성자가 'kyu' 인 Article 객체를 가져온다.
article, created = Article.objects.get_or_create(
title='Python GGultips',
user='kyu',
)
# 제목이 'JavaScript GGultips' 이고 작성자가 'kyu' 인 Article 객체를 새로 생성하여 가져온다.
article, created = Article.objects.get_or_create(
title='JavaScript GGultips',
user='kyu',
)
get_or_create() 메소드에서 반환되는 created 변수는 boolean(True/False) 값을 갖는다. 새로운 객체가 생성되었는지 여부를 알려주는 변수이다. 즉, ORM에서 해당하는 데이터가 데이터베이스에 없어서 새로 생성되었으면 created 변수에는 True가, 이미 get_or_create() 메소드로 조회된 객체를 가져왔으면 created 변수에는 False가 할당된다.
오늘의 규파팡이 느낀 점!
내가 작성하는 코드 없이 자꾸 구글링으로 주워오니깐 모르는 메소드가 너무 많다 ㅠㅠ
그러니깐 열심히 공부하자 시간에 쫓겨서 준비하지 말고시간에 여유를두고 준비하자!
'개발일지? > 내배캠' 카테고리의 다른 글
캠프 15주 3일차 TIL : serializer custom, serializers.%Field(source="모델명.필드명") (0) | 2023.06.21 |
---|---|
WIL 14주차 - 내배캠 (0) | 2023.06.18 |
WIL 13주차 - 내배캠 (0) | 2023.06.11 |
캠프 13주4일차 TIL : api db연결? (0) | 2023.06.08 |
캠프 13주 3일차 TIL : UnicodeDecodeError (0) | 2023.06.08 |