Как отобразить все прокомментированные оценки ТВ и фильмов в порядке убывания?

Что мы хотим достичь.

Я хочу отобразить оценку (звезды) фильма в порядке убывания.

Настоящее состояние

API tmdb используется для получения информации о фильмах. А модели movie и TV имеют только ID и stars(score). Отсюда, только те, у которых есть звезды, возвращаются в html.

Я хочу задать вопрос.

А если выбрана оценка, как сделать так, чтобы она отображалась в порядке убывания оценки? data = requests.get (f "https://api.themoviedb.org/3/tv/{tv_id}?api_key={TMDB_API_KEY}&language=en-US"). Теперь вы можете получить информацию о tv.

def index(request):
    
    sort_by = request.POST.get('sort_by','')
    tv = TV.objects.order_by(sort_by)
    movie = Movie.objects.order_by(sort_by)
        # Get the results from the API
    if tv:
        data_tv = requests.get(f"https://api.themoviedb.org/3/tv/{re.GET.get('id')}?api_key={TMDB_API_KEY}&language=en-US")
    if movie:
        data_movie = requests.get(f"https://api.themoviedb.org/3/movie/{movie.GET.get('id')}?api_key={TMDB_API_KEY}&language=en-US")
    

    # Render the template
    return render(request, 'Movie/index.html', {
        "data_tv": data_tv.json(),
        "data_movie": data_movie.json(),
    })

{% extends "base.html" %}
{% block content %}
    <h2>Trending</h2>
    <div class="input-group mb-3">
        <select class="form-select" id="media_type">
          <option selected>All Trending Media Types</option>
          <option value="movie">All Trending Movies(day)</option>
          <option value="tv">All Trending TV Shows(day)</option>
          <option value="person">All Trending Persons(day)</option>
     <option value="score">score</option>     
        </select>
    </div>
    
    <div id="trendings" class="row">

    </div>
    {% load static %}
    <script src="{% static 'js/Movieindex.js' %}"></script>
    
{% endblock %}
fetchTrendingResults("all", "week")

        var mediaType = document.getElementById("media_type")
        mediaType.addEventListener("change", function(event) {
            fetchTrendingResults(mediaType.options[mediaType.selectedIndex].value, "day")
        })

        function fetchTrendingResults(media_type, time_window) {
            var trendingDiv = document.getElementById("trendings")
            trendingDiv.innerHTML = ""

            fetch(`/api/trendings?media_type=${media_type}&time_window=${time_window}`, {
                method: "GET",
                headers: {
                    "Content-Type": "application/json"
                }}
                // todo:movieとTVのIDをもらってこれをURLにFethして映画とTVの情報をそれぞれでスターが高い順に表示する。
                )
            .then(res => res.json())
            .then(data => {
                for (let i=0; i<data.results.length; i++) {
                    var mainDiv = document.createElement("div");
                    mainDiv.setAttribute("class", "card");
                    mainDiv.setAttribute("style", "width: 18rem;");
                    var img = document.createElement("img");
                    img.setAttribute("src", "https://image.tmdb.org/t/p/w200" + data.results[i].poster_path);
                    img.setAttribute("class", "card-img-top");
                    img.setAttribute("alt", "...");
                    var body = document.createElement("div");
                    body.setAttribute("class", "card-body");
                    var title = document.createElement("h5");
                    title.setAttribute("class", "card-title");
                    if (data.results[i].name) {
                        title.innerHTML = data.results[i].name;
                    } else {
                        title.innerHTML = data.results[i].title;
                    }
                    //var text = document.createElement("p");
                    //text.setAttribute("class", "card-text");
                    //text.innerHTML = data.results[i].overview;
                    var link = document.createElement("a");
                    link.setAttribute("href", "/" + data.results[i].media_type + "/" + data.results[i].id + "/");
                    link.setAttribute("class", "btn btn-primary");
                    link.innerHTML = "View Details";
                    body.appendChild(title);
                    //body.appendChild(text);
                    body.appendChild(link);
                    mainDiv.appendChild(img);
                    mainDiv.appendChild(body);
                    document.getElementById("trendings").appendChild(mainDiv);
                }
            })
        }

Вернуться на верх