首页 > 编程 > Python > 正文

Django的Modelforms用法简介

2019-11-25 12:12:35
字体:
来源:转载
供稿:网友
from django.forms import ModelForm  class Test(ModelForm):   # 把那张表转化成form组件   class Meta:      # 这个意思即是把Article转化成form组件     model = models.Article      # 把表中的所有的字段都做转化,这里也可以传递一个list,可以指定显示某些字段     fields = "__all__"  # modelform组件的使用方法和forms组件的用法一样,但是i如果要保存出数据的时候,可以直接调用save方法保存就可以了,无论是单表,一对多,还是多对多       # 如果增加数据     # form = Test(request.POST)     # if form.isvalid():     #   form.save()     # 这样就可以直接保存         # 如果编辑数据,用下面的方法就可以把当前的对象的值渲染到form表单中,无论是单表,一对多,还是多对多     # obj = models.Article.objects.all().first()     # form = Test(instance=obj)     # 上面是实现渲染数据到form表单        # form = Test(request.POST,instance=obj)     # if form.isvalid():     #   form.save()      # 这个就是实现更新操作,和增加操作唯一的区别就是通过instance传递一个要编辑的对象进去就可以了

简单的用了一下model_forms,觉得还是不是很好用

我是用书、出版社,作者三张表来做这个联系

首先下面这个函数是用来展示书籍信息

def test_models(request):  method = request.method.lower()  if method == "get":    body_list = []    obj = models.Book.objects.all()     head_list = models.Book._meta.get_fields()     for i in obj:      temp = []      temp.append(i.bid)      temp.append(i.title)      temp.append(i.publish)      temp.append(i.auther.all())      body_list.append(temp)    return render(request,"modelform_html1.html",locals())  else:    pass

下面这个类就是modelform的类

class test(ModelForm):class Meta:model = models.Bookfields = "__all__"labels = {"title":"书籍的名称","auther":"作者","publish":"出版社"}error_messages = {"title":{"required":"不允许为空","invalid":"格式错误"}}widgets = {"title":wd.TextInput(attrs={"placeholder":"密码"})} field_classes = {"title":forms.EmailField}

下面这个函数是用来处理处理添加书籍的操作

def add(request):  method = request.method.lower()  if method == "get":    model_form_obj = test()    for i in model_form_obj:      print(i.label_tag(),"----------------------")    return render(request,"modelfrom_add.html",locals())   else:    model_form_obj = test(request.POST)    if model_form_obj.is_valid():      model_form_obj.save()       return redirect("/app2/test_models/")    else:      print("出错了")      model_form_obj = test(request.POST)       return render(request, "modelfrom_add.html", locals())

下面这个函数是用来处理编辑书籍的

def edit(request):  method = request.method.lower()  book_obj = models.Book.objects.get(bid=int(request.GET.get("id")))   if method == "get":    model_form_obj = test(instance=book_obj)    return render(request,"modelfrom_add.html",locals())  else:    model_form_obj = test(request.POST,instance=book_obj)    model_form_obj.save()    return redirect("/app2/test_models/")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表