明霞山资源网 Design By www.htccd.com
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.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/")
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
django,modelform
明霞山资源网 Design By www.htccd.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
明霞山资源网 Design By www.htccd.com
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。