분류 전체보기
-
Django 에서 Annotate 와 Union 을 함께 사용할 때 생기는 문제기술/Django 2021. 9. 24. 18:32
Django 에서 annotate 로 추가한 필드와 기존 필드들을 Union 후 같이 사용할 때 몇가지 이상한 동작이 있습니다. 똑같은 컬럼을 annotate 했지만 컬럼의 결과에 다른 컬럼의 값이 들어있는 문제가 발생했습니다. 파란색 네모가 status 값인데 일부가 address 에 존재하고 빨간색 네모가 address 값인데 일부가 status 에 존재했습니다. 동작하지만 원하는 결과가 나오지 않는 코드 Python 코드 가맹점쿼리 = 가맹점.objects.annotate( address=F('addr'), ).values( 'pk', 'status', 'address', 'name', ) 협력사쿼리 = 협력사.objects.annotate( status=Value(None, output_field..
-
Django 에서 Generic ForeignKey 를 사용을 권장하지 않는 이유기술/Django 2021. 9. 24. 18:25
다형성을 효율적으로 구현하기 위한 설계로 GenericForeignKey 를 찾게됩니다. 하지만 GenericForeignKey 를 사용하지 않아야할 이유와 대안에 대해서 이야기드리고자 합니다. GenericForeignKey 란? 한 특정 모델과 ForeignKey 를 연결해주는 것이 아니라 모든 모델과 범용적으로 ForeignKey 를 연결해주는 것이 GFK(GenericForeignKey) 입니다. 즉, ForeginKey 를 어떤 모델에나 연결하고싶다는 이야기입니다. 구현 방식 Django 에는 ContentType 이라는 모델이 있습니다. 이 모델은 DB 에 생성된 각 모델들의 정보를 가지고 있으며, 이 정보를 이용하여 여러 모델과 연결고리를 만들어 주는 것입니다. 세 필드를 가지고 Generi..