Serializer에서 method 사용하기 Serializer클래스 내에서 method field를 사용해서, 데이터를 가공하거나 계산된 값을 직접 필드로 추가할 수 있습니다. 이는 데이터 모델에는 없지만, 응답에 포함되어야 하는 데이터를 생산할 때 유용합니다. method field는 serializer클래스 내에 선언되며, 해당 클래스의 인스턴스에 의해 호출될 때 값을 반환합니다. 예 from rest_framework import serializers class ProductSerializer(serializers.Serializer): name = serializers.CharField(max_length=100) price = serializers.DecimalField(max_digits=1..
Django에서의 Transactions 트랜잭션(Transaction)이란? 트랜잭션은 데이터베이스에서 한 번에 수행되어야 할 일련의 연산들을 의미합니다. 트랜잭션은 아래의 4가지 속성을 가져야 합니다. 1. 원자성 (Atomicity) 트랜잭션의 모든 연산은 완전히 수행되거나, 아니면 전혀 수행되지 않아야 합니다. 연산 중 하나라도 실패하면 전체 트랜잭션은 취소되어야 하며, 모든 변경 사항이 롤백되어야 합니다. 예) a가 b에게 100만 원을 이체하려고 할 때 a계좌에서 100만 원 차감 후 시스템 오류로 b계좌에 입금을 실패하면 돈은 사라지게 됩니다. 그래서 이를 오류 발생 시 전체 연산을 취소(롤백)하는 트랜잭션으로 해결할 수 있습니다. 2. 일관성 (Consistency) 트랜잭션이 성공적으로 ..
Python - isinstance() isinstance() 함수는 Python 내장 함수 중 하나로, 어떤 객체가 특정 클래스나 타입의 인스턴스인지를 확인하는 데 사용됩니다. 주어진 객체가 지정한 클래스 또는 타입의 인스턴스인 경우 True를 반환하고, 아닌 경우 False를 반환합니다. 예 # 예제 클래스 정의 class Animal: pass class Dog(Animal): pass class Cat(Animal): pass # 객체 생성 dog_instance = Dog() cat_instance = Cat() # isinstance 사용 print(isinstance(dog_instance, Dog)) # True print(isinstance(cat_instance, Dog)) # Fals..
values_list()는 Django 쿼리셋(QuerySet) 메서드 중 하나로, 데이터베이스에서 특정 필드들만 가져올 때 사용됩니다. 이 메서드는 특정 필드들에 대한 튜플들의 리스트를 반환합니다. 예시 # 예시 모델 class MyModel(models.Model): name = models.CharField(max_length=100) age = models.IntegerField() gender = models.CharField(max_length=100) height = models.IntegerField() # values_list() 사용 queryset = MyModel.objects.values_list('name', 'age') 위의 예시에서 values_list('name', 'age..
annotate() 메서드는 Django 쿼리셋에서 사용되는 함수 중 하나로, 데이터베이스에서 집계된 값을 추가하는 데 사용됩니다. annotate() 메서드를 사용하면 원하는 필드 값을 가져오고 그 값을 기반으로 새로운 필드를 생성할 수 있습니다. annotate(aggregate_expression, ...) aggregate_expression: 필드 값을 계산하기 위한 집계 식을 지정합니다. 일반적으로 Django의 django.db.models 모듈에 있는 집계 함수들을 사용합니다. 예를 들어, Count(), Sum(), Avg(), Min(), Max() 등이 있습니다. annotate() 메서드는 쿼리셋의 결과에 대해 각 필드 값에 대한 집계를 수행하고, 결과에 추가된 필드를 포함한 새로운..
Django와 같은 Python 기반 프레임워크에서 *args와 **kwargs는 함수나 메소드에 임의의 개수의 인자를 전달하는데 사용되는 문법입니다. *args: *args는 임의의 개수의 위치 인자를 함수나 메소드로 전달하는데 사용됩니다. 이를 통해 함수나 메소드는 미리 정해지지 않은 개수의 인자를 받을 수 있습니다. *args는 튜플 형태로 인자를 전달받습니다. **kwargs : **kwargs는 임의의 개수의 키워드 인자를 함수나 메소드로 전달하는데 사용됩니다. 이를 통해 함수나 메소드는 미리 정해지지 않은 개수의 키워드 인자를 받을 수 있습니다.**kwargs\는 딕셔너리 형태로 인자를 전달받습니다. 참고 위치인자, 키워드 인자란 : https://yesaroun.tistory.com/entr..