Py学习  »  问与答

modelForm展示model里面的数据,然后设置为不可编辑,然后通过前台修改可编辑,submit

TMAC狂热-weibo • 9 年前 • 4758 次点击  

最近用到了Django modelForm 功能的其实是展示后台的数据, 然后可以将展示的text文本点击变为input 因为model与其他model有关联, 进行输入时候,需要去很多点击事件的处理,需要将input的选项从后台返回到前台进行选择,然后选择结束后,再ajax到后台执行修改操作.

看了modelForm的官方文档 有个思路

camp = Camp.objects.get(name='we')

camp_form = CampForm(instance=camp)

return {'camp_form': camp_form}

将form表单的initial初始值,设为我的model对象的实际值,但是我设置此刻form是不可以编辑的(设置他的input属性为disabled='disabled'), 然后用户点击了 修改button后, 我再将input属性disabled='disabled'撤销, 然后submit到后台. 请问, 这样做是否可以?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/1391
 
4758 次点击  
文章 [ 6 ]  |  最新文章 8 年前
chengx2000
Reply   •   1 楼
chengx2000    8 年前

对了,可以在定义Meta时用fields或exclude剔除你不希望出现的内容。

chengx2000
Reply   •   2 楼
chengx2000    8 年前

我也没太看懂你的意思,我的大致想法和你差不多:

# 获取数据 
camp = Camp.objects.get(name='we')

# 填充数据到form供用户修改 
camp_form = CampForm(instance=camp)

# 获取数据后更新
camp_form = CampForm(request.POST, instance=camp)
camp_form.save()
绝影天下-weibo
Reply   •   3 楼
绝影天下-weibo    8 年前

直接使用 widget=forms.HiddenInput 就可以提交了,不然在前端进行属性修改,只要无法编辑都是不可提交的。

TMAC狂热-weibo
Reply   •   4 楼
TMAC狂热-weibo    9 年前

@cdxfish thanks

cdxfish
Reply   •   5 楼
cdxfish    9 年前

@TMAC狂热-weibo 看来你还是没有了解modelform。 modelform设计的很灵活的,可以验证指定字段,所以你可以有选择的,只是对指定字段进行验证,其他字段赋默认值就可以了。

我只是真对你的回复回答下,至于你的原帖,没有看懂 :(

TMAC狂热-weibo
Reply   •   6 楼
TMAC狂热-weibo    9 年前

经过测验,这种解决方案不行. 用modelformset处理时,如果你只是提交了一个form(其余form空余), formset.is_valid()通不过的,提示错误,有的地方没有填写数据.