문제 상황: objects.all()을 불러와 그 안에서 하나의 필드에 대해 중복을 제거하기 위해 .distinct()를 했으나 적용이 안됨
# django models.py
from .models import Status
def status(request):
status = Status.objects.all().order_by('-id')
status_kind = status.value_list('kind', flat=True).distinct()
Status 테이블 안의 데이터에서 kind필드의 값들을 중복제거하여 리스트로 만들고자 하였으나, 적용이 되지 않았다.
*참고:
쿼리셋.values('필드이름') : 해당 필드와 값들을 딕셔너리로 제공
쿼리셋.value_list('필드이름') : 해당 필드의 값들을 튜플로 제공
쿼리셋.value_list('필드이름', flat=True) : 해당 필드의 값들을 리스트로 제공
# django models.py
from .models import Status
def status(request):
status = Status.objects.all().order_by('-kind')
status_kind = status.value_list('kind', flat=True).distinct()
하거나,
# django models.py
from .models import Status
def status(request):
status = Status.objects.all()
status_kind = status.value_list('kind', flat=True).distinct().order_by('-kind')
를 해야 한다.
.distinct()
는 order_by
가 적용된 필드에 한해서만 된다.
성공~