Django ORM에서 select replace 쿼리를 사용하는 방법
2019. 11. 6. 18:23ㆍWeb
728x90
mysql / mariadb 등 query에서 replace를 이용하여 특정 컬럼의 as로 치환된 값을 뱉어내게 할 수 있습니다.
다음을 보시죠
SELECT *, REPLACE(NAME, ' ', '') AS 'rename' FROM TABLES;
위 와같은 쿼리 구문을 작성시 TABLES라는
테이블의 전체 컬럼 + (name 컬럼을 치환한 rename 컬럼이 추가 표기됩니다.)
이러한 replace 쿼리 작성을 Django ORM에서도 작성이 가능한데 annotate를 활용하는 방법입니다.
from django.views.generic import View
from django.http import JsonResponse
from django.db.models import F, Func, Value
from overmap.models import Tables
class Test(View):
@staticmethod
def get(request, *args, **kwargs):
tb = Tables.objects.annotate(
rename=Func(
F('name'), Value(' '), Value(''),
function='replace',
)
print(tb)
return JsonResponse({'result': list(tb)})
위 와 같이 annotate에서
Func를 활용하여 replace를 구현할 수 있습니다.
Func는 쿼리에서 () 를 묶어주는 역할이고,
F는 컬럼을 명시하고, Value로 해당 되는 값을 표기합니다.
마지막으로 function인자로 replace를 부여하면
REPLACE(name, ' ', '') 처럼 사용할 수 있습니다.
728x90
'Web' 카테고리의 다른 글
GraphQL을 다들 쓰길래 제가 한번 알아봤습니다... (0) | 2019.11.16 |
---|---|
Nuxt.js + Firebase Google Login 붙이기 (0) | 2019.11.11 |
Google Firebase Project 생성 (0) | 2019.11.10 |
페이스북 페이지 액세스 토큰 만료 없애기 (0) | 2019.09.21 |
XSS + Session Hijacking (0) | 2017.09.25 |