Django orm 조건문

BackEnd_Ash.log·2022년 12월 1일
0
return Test.objects.filter( name = 'test')

불러러오면 name 에 해당하는 데이터를 불러오게 된다.

return Test
         .objects
         .filter( name = 'test')
         .annotate(
         	name_with_test = Case (
            	When (
                	~Q(name__startswith='test'),
                    then=Concat(Value('test'),'name')
                ),
            )
        ).values('name','name_with_test')

이렇게 생성하면 name 중에서 앞에 test 문자열이 없는것은 붙여서 출력하게 된다.

하지만 이렇게 되면 name_with_test 라는 필드가 하나 생성이 된다.

그래서 default 로 하나 지정을 해주면 해결이 된다.

return Test
         .objects
         .filter( name = 'test')
         .annotate(
         	name_with_test = Case (
            	When (
               # name 에서 test 가 없으면 test 를 붙여서 가져온다.
                	~Q(name__startswith='test'),
                    then=Concat(Value('test'),'name')
                ),
                default='name'
            )
        ).values('name_with_test')
profile
꾸준함이란 ... ?

0개의 댓글