Пример #1
0
def edit_submit(request, movie_id):
    movie = get_object_or_404(Movie, id=movie_id)
    if request.method == "POST":
        form = MovieForm(request.POST)
        form.data = form.data.copy()
        category_id_list = []
        listgenres = request.POST.getlist('categories')
        for genre in movie.categories.all():
            movie.categories.remove(genre)
        for genre in listgenres:
            try:
                category = get_object_or_404(Category, genre=genre)
                category_id = str(category.id).encode("utf-8").decode("utf-8")
                category_id_list.append(category_id)
            except:
                pass
            else:
                if genre not in movie.categories.all():
                    movie.categories.add(category)
                form.data.setlist('categories', category_id_list)
        try:
            genre_id = request.POST.get('genre', '')
            new_category = get_object_or_404(Category, id=genre_id)
            movie.categories.add(new_category)
            movie.save()
        except:
            pass

        #hack to avoid '"" is not a valid value for a primary key' error
        sample_category = get_object_or_404(Category, id=1)
        sample_category_id = str(
            sample_category.id).encode("utf-8").decode("utf-8")
        category_id_list.append(sample_category_id)
        form.data.setlist('categories', category_id_list)

        if form.is_valid():
            movie.name = form.cleaned_data[
                'name']  #request.POST.get("name", "")#
            movie.year = form.cleaned_data[
                'year']  #request.POST.get("year", "")#
            movie.watched = form.cleaned_data[
                'watched']  #request.POST.get("watched", "")#
            movie.watch_date = form.cleaned_data[
                'watch_date']  #request.POST.get("watch_date", "")#
            movie.p_rating = form.cleaned_data[
                'p_rating']  #request.POST.get("p_rating", "")#
            movie.imdb_rating = form.cleaned_data[
                'imdb_rating']  #request.POST.get("imdb_rating", "")#
            movie.rt_rating = form.cleaned_data[
                'rt_rating']  #request.POST.get("rt_rating", "")#
            movie.imdb_url = form.cleaned_data[
                'imdb_url']  #request.POST.get("imdb_url", "")#
            movie.rt_url = form.cleaned_data[
                'rt_url']  #request.POST.get("rt_url", "")#
            movie.douban_url = form.cleaned_data[
                'douban_url']  #request.POST.get("douban_url", "")#
            movie.comment = form.cleaned_data[
                'comment']  #request.POST.get("comment", "")
            movie.save()
        return render(request, 'tommymovies/movie.html', {
            'movie': movie,
            'form': form,
            'listgenres': listgenres
        })
    else:
        form = MovieForm(instance=movie)
    #return render(request, 'tommymovies/movie.html', {'movie': movie })
    return HttpResponseRedirect(request.META.get('HTTP_REFERER'))