Django-------ModelForm
http://www.cnblogs.com/yuanchenqi/articles/8034442.html 详细参考大神博客
ModelForm即model + form
1、先引入操作 》》》》 from django.forms import ModelForm
2、进行下面的操作,这是要进行转换成BookModelForm这个类(自己定义的); 下面的这个model以及fields都是Meta内置定好的,后面的是自己写的

3、在html中的操作》》》as_p方法表示显示全部,这样的话,页面上的所有信息,都能显示出来


4、修改成中文的,用lable,且是个字典,这是把字典中的键,改成中文的形式作为值;》》右侧是中文效果图


5、用field__all__,会显示出下面所有的字段,为什么会这么显示呢,因为有的表示多对多的,所以会这么显示

6、把错误信息的英文修改成中文的,且小方框部分的单词不是瞎写的,是默认的

这些上下都是一一对应关系

这个把报错的信息,放到了右边来提示

这个是直接能添加一本书,只需要这么一个操作就能完整的添加一本书,因为model和form的结合,由modelform完成了这件事情(不用自己取数据之类的繁琐步骤)

编辑页面开始
加上这个instance之后,就知道要修改哪条数据了,换句话说,所要进行修改的数据则会直接显示在页面上,这个就不用判断哪个是所被选中的了,也就是要修改的这条数据,默认的都会显示出来
edit的注释

自己简单总结流程:
model-form流程:
(1) 定义modelForm:
from django.forms import ModelForm
class BookModelForm(ModelForm):
class Meta:
model=Book
fields="__all__"
labels={
"title":"书名",
"price":"价格",
},
error_messages={
"title":{"required":"不能为空"}
}
(2) 按照form对象使用定义modelForm的对象;
def add:
if GET:
form=BookModelForm()
return render(request,"add.html",locals())
if POST:
form=BookModelForm(request.POST)
if form.is_valid():
form.save()
return redirect("/index/")
def edit:
edit_book = Book.objects.filter(pk=id).first()
if GET:
if request.method=="GET":
form=BookModelForm(instance=edit_book)
return render(request,"edit.html",locals())
if POST:
form=BookModelForm(data=request.POST,instance=edit_book)
if form.is_valid():
form.save()
return redirect("/index/")
未完待续.................
浙公网安备 33010602011771号