Как мне получить все прокомментированные оценки телепередач и фильмов в порядке убывания? ДжангоJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Гость
 Как мне получить все прокомментированные оценки телепередач и фильмов в порядке убывания? Джанго

Сообщение Гость »

Чего мы хотим достичь.
Я хочу отсортировать фильмы по их рейтингу и отфильтровать фильмы с рейтингом ниже указанного порога. 2. Получите идентификаторы фильмов и телепередач, которые прокомментированы в представлении, и получите данные и оценку по URL-адресу один за другим. 3. Верните его в html и отобразите фильмы и сериалы в порядке убывания рейтинга.
Текущее состояние
API tmdb используется для получения информации о фильме. А у модели кино и ТВ есть только ID и звезды(оценка). Отсюда в html возвращаются только те, которые отмечены звездочками.
Я хочу задать вопрос.
А если выбрана оценка, как мне сделать так, чтобы она отображалась в порядке убывания оценок? data = Requests.get (f "https://api.themoviedb.org/3/tv/{tv_id} ... uage=en-US"). Теперь вы можете получить информацию о телевидении.
FieldError в / Невозможно преобразовать ключевое слово '' в поле. Варианты выбора: comment_movie, id, звезды. def index(запрос): # Отрисовываем шаблон sort_by = request.POST.get('sort_by','') фильм = Movie.objects.order_by(sort_by) tv = TV.objects.order_by(sort_by) movie_id = movie.GET.get('id') tv_id = tv.GET.get('id') печать (tv_id) вернуть рендер (запрос, 'Movie/index.html') def view_movie_detail (запрос, movie_id): # Нет смысла создавать фильм только с атрибутом id # Поэтому вместо этого я использую get_object_or_404 если нет(Movie.objects.filter(id=movie_id)): Фильм(идентификатор = movie_id).save() фильм = get_object_or_404 (Кино, идентификатор = Movie_id) если нет (request.user.id == Нет): пытаться: comment_movie = Comment_movie.objects.get(user=request.user, movie=movie) кроме Comment_movie.DoesNotExist: comment_movie = Нет еще: comment_movie = Нет если запрос.метод == 'POST': если request.POST.get('action') == 'удалить': comment_movie.delete() return redirect('view_movie_detail', movie_id=movie_id) еще: форма = Comment_movie_CreateForm(request.POST, экземпляр=comment_movie) если form.is_valid() и request.POST.get('action') == 'обновление': форма.сохранить() return redirect('view_movie_detail', movie_id=movie_id) elif form.is_valid() и request.POST.get('action') == 'create': Комментарий_фильм( комментарий = form.cleaned_data['комментарий'], пользователь = запрос.пользователь, звезды = form.cleaned_data['stars'], фильм = фильм ).сохранять() return redirect('view_movie_detail', movie_id=movie_id) еще: форма = Comment_movie_CreateForm(instance=comment_movie) # Поместите логику представления за пределы условного выражения. # В противном случае ваш код сломается, когда форма подтвердит значение False data = Requests.get(f"https://api.themoviedb.org/3/movie/{mov ... uage=en-US") рекомендации = Requests.get(f"https://api.themoviedb.org/3/movie/{mov ... uage=en-US") если нет (request.user.id == Нет): комментарии = перевернуты(Comment_movie.objects.filter(movie_id=movie_id).exclude(user=request.user)) mycomment = обратный(Comment_movie.objects.filter(movie_id=movie_id,user=request.user)) еще: комментарии = перевернуты(Comment_movie.objects.filter(movie_id=movie_id)) мой комментарий = обратный (Comment_movie.objects.none()) среднее = movie.average_stars() контекст = { «данные»: data.json(), «рекомендации»: рекомендации.json(), "тип": "фильм", «мой комментарий»: мой комментарий, «комментарии»: комментарии, «средний»: средний, «форма»: форма, "comment_movie": comment_movie, # ПРИМЕЧАНИЕ: добавьте комментарий в контекст } вернуть рендер (запрос, "Movie/movie_detail.html", контекст) класс Movie(models.Model): id = models.CharField(primary_key=True, editable=False, validators=[буквенно-цифровой],max_length = 9999) звезды = модели.FloatField( пусто = Ложь, ноль = Ложь, по умолчанию=0, валидаторы = [MinValueValidator(0.0), MaxValueValidator(10.0)] ) защита get_comments (сам): return Comment_movie.objects.filter(movie_id=self.id) защита Average_stars (сам): комментарии = self.get_comments() n_comments = комментарии.count() если n_комментариев: self.stars = sum([comment.stars для комментария в комментариях]) / n_comments еще: self.stars = 0 вернуть себе.звезды класс ТВ(модели.Модель): id = models.CharField(primary_key=True, editable=False, validators=[буквенно-цифровой],max_length = 9999) звезды = модели.FloatField( пусто = Ложь, ноль = Ложь, по умолчанию=0, валидаторы = [MinValueValidator(0.0), MaxValueValidator(10.0)] ) защита get_comments (сам): return Comment_tv.objects.filter(tv_id=self.id) защита Average_stars (сам): комментарии = self.get_comments() n_comments = комментарии.count() если n_комментариев: self.stars = sum([comment.stars для комментария в комментариях]) / n_comments еще: self.stars = 0 вернуть себе.звезды класс Comment_movie(models.Model): комментарий = models.TextField(max_length=1000) звезды = модели.FloatField( пусто = Ложь, ноль = Ложь, по умолчанию=0, валидаторы = [MinValueValidator(0.0), MaxValueValidator(10.0)] ) пользователь = модели.ForeignKey(CustomUser, on_delete=models.CASCADE) фильм = модели.ForeignKey(Фильм, on_delete=models.CASCADE) созданный_at = models.DateTimeField(по умолчанию=datetime.now) update_at = models.DateTimeField(auto_now=True) класс Мета: unique_together = («пользователь», «фильм») индексы = [ models.Index(fields=['user', 'movie']), ] класс Comment_tv(models.Model): класс Мета: unique_together = ('пользователь', 'тв',) комментарий = models.TextField(max_length=1000) звезды = модели.FloatField( пусто = Ложь, ноль = Ложь, по умолчанию=0, валидаторы = [MinValueValidator(0.0), MaxValueValidator(10.0)] ) пользователь = модели.ForeignKey(CustomUser, on_delete=models.CASCADE) tv = models.ForeignKey(TV, on_delete=models.CASCADE) созданный_at = models.DateTimeField(по умолчанию=datetime.now) update_at = models.DateTimeField(auto_now=True) класс Мета: unique_together = («пользователь», «тв») индексы = [ models.Index(fields=['user', 'tv']), ] {% расширяет "base.html" %} {% блокирует контент %} В тренде Все популярные типы медиа Все популярные фильмы (день) Все популярные телешоу (день) Все популярные люди (день) оценка {% нагрузки статической %} {% конечный блок %} fetchTrendingResults("все", "неделя") var mediaType = document.getElementById("media_type") mediaType.addEventListener("изменение", функция(событие) { fetchTrendingResults(mediaType.options[mediaType.selectedIndex].value, «день») }) функция fetchTrendingResults(media_type, time_window) { vartrendingDiv = document.getElementById("тренды") TrendingDiv.innerHTML = "" fetch(`/api/trendings?media_type=${media_type}&time_window=${time_window}`, { метод: «ПОЛУЧИТЬ», заголовки: { «Тип контента»: «приложение/json» }} // todo:movieとTVのIDをもらってこれをURLにFethして映画とTVの情報をそれぞれでスターが高い順に表示する。 ) .then(res => res.json()) .then(данные => { for (let i=0; i
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»