24 Jul 18 ModelForm

Posted zhangyaqian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了24 Jul 18 ModelForm相关的知识,希望对你有一定的参考价值。

24 Jul 18 (ModelForm)

https://www.cnblogs.com/yuanchenqi/articles/8034442.html

 

如果不用ModelForm,将Model手动转成Form时,对于非一对一字段,可能要使用以下字段类:

ChoiceField是Field的子类:拿从内存中取的数据时用

ModelChoiceField 是ChoiceField的子类: 拿从数据库中取的数据时用(多对一)

ModelMultipleChoiceField是ModelChoiceField的子类: 拿从数据库中取的数据时用(多对多)

 

is_pub=forms.ChoiceField(choices=((1,"出版"),(2,"未出版"),))

publish=forms.ModelChoiceField(queryset=Publish.objects.all())

authors=forms.ModelMultipleChoiceField(Author.objects.all())

 

ModelForm: 将Model转换成Form,从而进行下一步调用

 

class BookModelForm(forms.ModelForm):

    class Meta:

        model=Book

       fields="__all__"

              

添加表单:          

       GET:

              form=BookModelForm()

              form:渲染

       POST:

              form=BookModelForm(request.POST)

              form.is_valid()

              form.save() # 添加数据create

 

编辑表单:

    edit_book = Book.objects.get(pk=id)

    GET:

              form=BookModelForm(instance=edit_book)

              form:渲染

       POST:

          form=BookModelForm(request.POST,instance=edit_book)

              form.is_valid

              form.save() # 更新数据update

以上是关于24 Jul 18 ModelForm的主要内容,如果未能解决你的问题,请参考以下文章

25 Jul 18 批量导入 保持搜索 Q补充 GET/POST

Report WebCore crash to the ErrorReportUtils at:Fri Jul 24 09:59:08 格林尼治标准时间+0800 2015

如何在 Oracle 中使用子查询?

linux定时任务及练习

date时间转换指定格式适配secure

定时任务