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'))