Django的Modelforms的介绍详解编程语言

   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传递一个要编辑的对象进去就可以了 

  

Django的Modelforms的介绍详解编程语言

简单的用了一下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.Book 
fields = "__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/") 

  

参考博客

http://www.cnblogs.com/wupeiqi/articles/6144178.html  武sir:Form组件

http://www.cnblogs.com/wupeiqi/articles/6216618.html  武sir:Model

http://www.cnblogs.com/wupeiqi/articles/6229414.html  武sir:ModelForm

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/20783.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论