홈>
Recommendations
를 주문했습니다
rating_prediction
에 의해
ID를 얻은 다음 필터링하면
Tracks
를 얻습니다.
, 순서가 더 이상 동일하지 않습니다
class RecommendationView(generics.ListAPIView):
authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated,)
serializer_class = RecommendedTrackSerializer
queryset = Recommendations.objects.all()
pagination_class = api_settings.DEFAULT_PAGINATION_CLASS
def get_queryset(self):
recommendation = Recommendations.objects.filter(user=self.request.user)
sorted_recommendation = recommendation.order_by('-rating_prediction')
ids = list(sorted_recommendation.values_list('track', flat=True))
tracks = Track.objects.filter(id__in=ids)
return tracks
모델 :
class Recommendations(models.Model):
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
verbose_name='user which the recommendation is given',
)
track = models.ForeignKey(
Track,
on_delete=models.CASCADE,
verbose_name="track which recommend to the user",
)
date = models.DateField(
auto_now_add=True,
verbose_name='when the recommendation was generated',
)
rating_prediction = models.FloatField(
validators=[MinValueValidator(0), MaxValueValidator(5)]
)
class Track(models.Model):
track_id = models.CharField(max_length=24)
artist = models.ForeignKey(Artist, on_delete=models.CASCADE)
title = models.CharField(max_length=255)
link = models.URLField(max_length=255, blank=True)
tags = models.ManyToManyField(Tag, through='Tagged', blank=True)
similarity = models.ManyToManyField(
'self',
blank=True,
through='FusionSimilarity',
related_name='similar_to',
symmetrical=False
)
users = models.ManyToManyField(User, through='PlayTrack', blank=True)
- 답변 # 1
- 답변 # 2
Track.objects.filter(recommendation__user=self.request.user).order_by('-recommendation__rating_prediction')
에서 특정 사용자가 추천 한 s와 사용자가이를 어떻게 권장했는지에 따라 주문합니다.
관련 자료
- javascript - 루트 노드 항목을 사용하여 중첩 된 JSON을 순서대로 트래버스하는 방법
- comparison - awk - 데이터 생성시 행 순서를 유지하고 중복 문자열 (미러) 제거
- javascript - JS가 올바르게 작동하지 않는 목록 항목의 역순
- haskell - 고차 함수를 사용하여 첫 번째/마지막 필터링
- Django의 주문 ID를 기반으로 데이터베이스의 데이터 업데이트
- daskbagfrom_sequence는 순서를 유지합니까?
- Django 2x의 필터링 및 페이지 매김
- python - 외래 키를 기준으로 데이터 필터링 - 장고
- sqlite - in 배열과 동일한 순서로 항목 가져 오기
- Javascript를 사용하여 목록 항목을 가져 오면 항목 순서를 변경할 수 있습니까?
- python 3.x - 나는 icontains보다 먼저 istarts로 주문한 django에서 검색을 만들고 싶습니다
- Django 관리자 목록에 항목 ID를 표시하는 방법
- Powershell은 일부가 선택 사항 인 경우 주문 항목을 비교합니다
- python 3.x - Django 모델은 입력 날짜에 따라 결과를 정렬합니다
- html - 포장시 상품의 순서를 변경할 수 있나요?
- sql - 한 행에있는 모든 항목의 총액을 기준으로 그룹화하는 방법
- postgresql - 장고는 다른 열의 순서로 구별됩니다
- html - 전화 화면에서 웹 사이트 항목의 순서를 변경하는 방법
- python - 장고를 필터링 할 때 주석이 달린 순위 유지
- 장고 | 휴식 | 최상위 JSON 필드 추가 필터링 옵션 중단
관련 질문
- 직렬 변환기를 통해 django rest 프레임 워크에서 새 의견을 받았을 때 게시물 작성자에게 메일을 보내는 방법은 무엇입니까?
- 내 필드를 자동으로 채우고 django 관리 사이트에서 편집할 수 없도록 만드는 방법
- python : Django ORM이 내 객체를 저장하지 않는 이유
- django : DRF Modelviewset을 사용하여 디테일뷰용 URL 생성
- python : ModelSerilizer에서 create() 메서드를 재정의하고 ID로 개체 가져오기(Django 3.2)
- django rest framework에서 저자의 책을 보여주는 API 만들기
- django : 사용자가 질문을 하기 위해 코인을 주어야 하고, 답변자가 코인을 받는 질문 앱
- python : Django 쿼리가 나머지 프레임워크의 페이지 매김 모델에서 올바르게 정렬/정렬되지 않습니다.
- javascript : 사용자를 외래 키로 사용하여 React로 Django 데이터베이스에 객체 생성 시도(rest-framework)
- django : 디코딩()을 호출할 때 "알고리즘" 인수에 대한 값을 전달해야 합니다.
당신은 다음과 같이 필터링합니다 :
그러나 이것은아닙니다는
Track
를 의미합니다 s는ids
와 같은 순서입니다. . 당신은 단순히 필터링하고, 데이터베이스가 이것을 어떻게 색인화했는지에 따라, 일반적으로id
에 의해 목록 순서를 생성합니다 또는 다른 측정 항목 (예 : 기본 주문을Track
에 첨부 한 경우) 모델). 이것은 데이터베이스 엔진에도 의존 할 수 있습니다. 주문을 언급하지 않으므로 데이터베이스는 주문을 선택할 수있는 "자유"가 있습니다.그러나 쿼리 양을 줄이고 다음과 같이 작성할 수 있습니다 :
사용자가 트랙 당 하나의 추천 만 제공 할 수있는 경우 복제본이 생성되지 않습니다. 사용자가 트랙에 대해 여러 가지 권장 사항을 제공 할 수있는 경우
.distinct()
를 추가해야합니다. 전화.우리는
Track
를 얻는다 하나검색어