Django промежуточная страница и обработка нескольких элементов - PullRequest
0 голосов
/ 17 февраля 2020

Я очень новичок в python и Django и хотел попробовать, создав веб-интерфейс для моей личной библиотеки мультимедиа.

Я создал пользовательское действие администратора, которое запрашивает TMDB API хранить информацию о фильмах в моей БД.

Если есть несколько результатов для mov ie, я перенаправлен на промежуточную страницу с помощью ChoiceField (), чтобы выбрать соответствующую.

Вот проблема, когда я проверяю промежуточную страницу он добавляет мой выбор в базу данных, но прекращает обработку других запрошенных фильмов ...

Я предполагаю, что проблема возникает для перенаправления после обработки формы, но я не могу понять это.

Спасибо за помощь, ребята!

admin.py

class MovieAdmin(admin.ModelAdmin):
actions = ['parse']
list_display = ['title', 'year', 'status']
change_list_template = "admin/movies_changelist.html"

def parse(self, request, queryset):
    if 'apply' in request.POST:
        form = MovieSelectForm(request.POST)
        res = ast.literal_eval(request.POST['res'])
        for r in res:
            if r['id'] == int(request.POST['Movies']):
                update_movie_infos(request.POST['_selected_action'], r)
        return HttpResponseRedirect(request.get_full_path())

    SELECTED_MOVIES = []
    for movie in queryset:
        if movie.status == 'UN':
            # Building API Request
            api_key = '8a260244852cbd90bc5662e721a2d685'
            uri = 'https://api.themoviedb.org/3/search/movie'
            req = requests.get(uri, {
                'api_key': api_key,
                'query': movie.title,
                'year': movie.year,
                'language': 'fr-FR'
            }).json()
            res = req['results']
            if len(res) == 1:
                update_movie_infos(movie.pk, res[0])
                self.message_user(
                    request, '{} parsed successfully.'.format(movie.title))
            elif len(res) == 0:
                self.message_user(request, '{}: no results.'.format(
                    movie.title), level='error')
            else:
                self.message_user(
                    request, '{}: Please choose the movie corresponding.'.format(movie.title), level='warning')
                for r in res:
                    SELECTED_MOVIES.append((r['id'], r['title']))

                form = MovieSelectForm(SELECTED_MOVIES)
                return render(request, 'admin/TMDB_multiple_results.html', {
                    '_selected_action': queryset.values_list('pk', flat=True),
                    'entry': movie.pk,
                    'res': res,
                    'form': form
                })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...