본문 바로가기

Dev/Django

Django Model - concat 사용방법

728x90
반응형

django에서 쿼리를 사용하다 보면 필드명끼리 합치거나 where절을 조회 할때 concat을 사용해야 하는 경우가 있다.

 

그런 경우 사용하면 됩니다.

사용하기 위해선 2개의 라이브러리를 임포트 해야 합니다.

from django.db.models.functions import Concat
from django.db.models import CharField, Value

 

 

p_info = ProductInfo.objects.annotate(product_info=Concat(Value(' '), 'fd_product_name', Value(' '), 'fd_product_standard',
                                        output_field=CharField())).get()

 여기서 Value를 사용하는 이유는 concat시 기본적으로 하게 되면 연결되어서 필드값이 된다.

만약 필드A에 a가 있고, 필드 B에 b가 있다면 

 a= Concat('a','b', output_field=CharField()))를 선언하게 되면 결과는 ab로 나오게 된다

Concat의 mysql 기본 값은 연결 문자가 '' 이렇게 처리가 되었어서 이런 문제가 발생한다. 

이걸 처리 하기 위해서 value를 통해서 공백을 주는 방법이다.

또한 output_field는 문자열로 선언해서 사용해야 합니다. 

 

위와 같이 사용하게 되면 문제 없이 concat을 사용하실 수 있습니다.

 

 

 

728x90
반응형