首页 > Django 利用form修改文章 data didn't validate无法更改

Django 利用form修改文章 data didn't validate无法更改

网站前台希望通过 form 管理文章,直接新增文章是没有问题的,但是我在建立修改文章页面的时候出现了无法更改,排查是 data didn't validate,但是这个值是直接读取的该文章的数据。所以不知道什么情况,form 代码如下(与新增文章用的同一个 form ):

from django.forms import ModelForm
from order.models import Order

class OrderForm(ModelForm):
  class Meta:
    model = Order
    fields = ('title',
              'go_time',
              'adult_num',
              'kid_num',
              'adult_num',
              'adult_money',
              'adult_moneys',
              'kid_money',
              'kid_moneys',
              'link_man',
              'link_phone',
              'customer',
              'travel',
              'sale_man',
              'money_status',
              'sum_money',
              )

views 代码如下:

def edit(request,id):
    obj = get_object_or_404(Order, id=id)
    form = OrderForm(request.POST or None, request.FILES or None, instance=obj)
    if form.is_valid():
        form.save()
        return redirect('')
    return render(request, 'edit.html', {'form': form,'obj':obj})

Html 里是以这种方式展示的:

<form method="post">
    {% csrf_token %}
    {{ form.title }}
    <input type="submit" value="确认修改">
    

整个流程就是这样,Html 能够顺利读出该 id 下文章的数值并填在 form 生成的 input 里,但修改之后提交不能完成修改,排查原因是data didn't validate.

搜索很久没有头绪,希望老司机指点下该怎么写或者怎么排查


在 form.is_valid() 后面加断点吧。若是未数据为验证通过,会将错误信息填充到 form.errors。里面会包含详细的错误信息。
当然,直接打印 form.errors 也是可行的。


检查你的model Order 实例中的每个字段是否允许为空,可能你的显示字段不全,但是保存却需要有值才能入库。

检查你的填写的值是否通过验证。

ps: 最好贴出错误日志

【热门文章】
【热门文章】