python - Django 利用form修改文章 data didn't validate无法更改
高洛峰
高洛峰 2017-04-17 15:45:29
[Python讨论组]

网站前台希望通过 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.

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
天蓬老师

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

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

ps: 最好贴出错误日志

黄舟

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号