def edit_category(request,pk, template_name='jizhang/new_category.html'): out_errors = [] if request.method == 'POST': form = CategoryForm(request,data=request.POST) if form.is_valid(): form.save(pk) return HttpResponseRedirect("/jizhang/categories") else: category_list = get_object_or_404(Category, id=pk) form = CategoryForm(request,instance=category_list) return render(request, template_name,{'form':form})
def category(request,pk): out_errors = [] if request.method == 'POST': form = CategoryForm(request,data=request.POST) if form.is_valid(): if not form.cleaned_data['p_category']: pid=0 else: pid = form.cleaned_data['p_category'].id if check_parent_category(int(pk),pid,form.fields['p_category'].choices): new_category = form.save(request) new_category.id=int(pk) new_category.save() return HttpResponseRedirect("/jizhang/categorys") else: out_errors = "父类别不能和子类别重复!" else: category_list = get_object_or_404(Category, id=pk) form = CategoryForm(request,instance=category_list) context = {'form':form,'username':request.user.username,'out_errors':out_errors} return render_to_response('jizhang/new_category.html',RequestContext(request,context))
def edit_category(request, pk, template_name='jizhang/new_category.html'): out_errors = [] if request.method == 'POST': form = CategoryForm(request, data=request.POST) if form.is_valid(): form.save(pk) return HttpResponseRedirect("/jizhang/categories") else: category_list = get_object_or_404(Category, id=pk) form = CategoryForm(request, instance=category_list) return render(request, template_name, {'form': form})
def new_category(request): if request.method == 'POST' and request.is_ajax(): form = CategoryForm(request, data=request.POST.copy()) if form.is_valid(): # 将数据保存到数据库 clean_data = form.cleaned_data # print("clean_data: ", clean_data) # form.add_error('category_name', '该分类已经存在') # form.add_error('category_name', '第二个错误') # print("clean_data: ", clean_data) # print("clean_data: ", form.cleaned_data) # print("form.errors: ", form['category_name'].errors, type(form['category_name'].errors)) # print("退出...") category_name = clean_data['category_name'] # 名称 p_category = None if clean_data[ 'p_category'] == '0' else None # 从数据库获取 # 父类名称 value即为id isIncome = bool(int(clean_data['isIncome'])) # 收入/支出 u = request.user # 用户 c = Category(p_category=p_category, name=category_name, isIncome=isIncome, user=u) try: c.save() # 保存到数据库 except IntegrityError: form.add_error('category_name', '该分类已经存在!') else: print("category保存成功") in_json = json.dumps([True, {}]) # 返回操作状态 return HttpResponse(in_json, content_type='application/json') in_json = json.dumps([False, form.errors]) return HttpResponse(in_json, content_type='application/json') # 表单验证不通过,返回错误信息 else: form = CategoryForm(request) return render(request, "jizhang/new_category.html", { 'form': form, })
def edit_category(request, c_id=None): ''' 0、修改的记录是c_id 1、获取编辑的是哪一条记录 2、使用提交的数据更新该条记录 ''' other_error = {} print(request.POST) try: c = Category.objects.get(id=c_id) # 将要修改的记录 except Category.DoesNotExist: print('不存在该记录') else: if request.method == 'POST' and request.is_ajax(): form = CategoryForm(request, data=request.POST.copy()) if form.is_valid(): clean_data = form.cleaned_data c.name = clean_data['category_name'] # 修改为新的分类名称 p_id = int(clean_data['p_category']) # 获取提交的父类id try: u_categories = Category.objects.filter( user=request.user) # 该用户的所有分类 u_p_id = c_id if c.p_category is None else c.p_category.id childs_set = set() childs_set = get_category_childs(childs_set, u_categories, u_p_id) # 获取该用户当前父类下所有子类 c.p_category = None if p_id == 0 else Category.objects.get( id=p_id) # 新的父类 if p_id == int(c_id) or c.p_category in childs_set: form.add_error('p_category', '父类不能设置为自身和其子类') in_json = json.dumps([False, form.errors]) return HttpResponse(in_json, content_type='application/json') except Category.DoesNotExist: pass else: c.isIncome = bool(int(clean_data['isIncome'])) # 新的收支情况 try: c.save() except IntegrityError: form.add_error('category_name', '该分类已经存在!') else: print('category修改成功') in_json = json.dumps([True, {}]) return HttpResponse(in_json, content_type='application/json') in_json = json.dumps([False, form.errors]) return HttpResponse(in_json, content_type='application/json') else: category_name = c.name p_category = '0' if c.p_category is None else c.p_category.id isIncome = int(c.isIncome) form = CategoryForm(request, data={ 'category_name': category_name, 'p_category': p_category, 'isIncome': isIncome }) return render(request, 'jizhang/new_category.html', { 'form': form, 'other_error': other_error })