def update(request): rating_type, iid, value, ip = parse_request(request) if is_already_voted(rating_type, ip, iid): return HttpResponseBadRequest(json.dumps({"message": "ALREADY_VOTED"})) Model = get_rating_model(rating_type) model = Model.objects.get(pk=iid) model.update_rating(value) Rating.create(rating_type=rating_type, iid=iid, ip=ip, value=value) return JsonResponse({ "rating_positive": model.rating_positive, "rating_negative": model.rating_negative, })