Get / Update_or_create
Get_or_create
Get_or_create(default = none, **kwargs)는 (objects, created)와 같이 튜플 형태로 반환한다. 여기서 objects은 반환되거나 create되는 부분이며 created는 boolean 값으로써 True, False를 반환한다. object가 있다면 object와 False가 반환된다.
class Cart(TimeStamp):
user = models.ForeignKey(User, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
quantity = models.IntegerField(default=0)
#quantity = models.IntegerField()
cart, is_created = Cart.objects.get_or_create(
user = user,
product_id = product_id,
quantity = quantity
)
cart.quantity += quantity
cart.save
장바구니 담기 기능을 예로 가져왔다. 입력된 값이 db에 없을 경우에 db에 create 해주고 db에 있다면 cart라는 변수에 해당하는 row가 담긴다. cart라는 변수의 quantity를 불러와서 값을 변경해주고 저장한 코드이다. 모델의 quantity에서 default를 0으로 지정해줬기 때문에 create가 가능하다.
Update_or_create
위의 get과 비슷한 방식으로 동작한다. 값이 없다면 create를 해주고 없다면 값을 update할 수 있다.
obj, created = Person.objects.update_or_create(
first_name='John',
last_name='Lennon',
defaults={'first_name': 'Bob'},
)
Author And Source
이 문제에 관하여(Get / Update_or_create), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@vkdtksdl789/Get-Updateorcreate저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)