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/")
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
写作目的 喜欢一个学习观点以教促学, 一直以来, 学习的时候经常会发现, 某个方法某个问题自己已经明白了, 但是在教给别人的时候确说不清楚, 所以慢慢的学会了以教促学这种方法, 在教给别人知识的同时也能够提升自己对语言, 对框架的理解. 希望达到的目标: 希望能写出一个系列文章, 我也不知道到底能写多少 能够让认真阅读这个系列的文章的人, 能在读完之后做出一个简单的博客 教会读者使用简单的git操
本文向大家介绍改进Django中的表单的简单方法,包括了改进Django中的表单的简单方法的使用技巧和注意事项,需要的朋友参考一下 首先,search()视图对于空字符串的处理相当薄弱——仅显示一条”Please submit a search term.”的提示信息。 若用户要重新填写表单必须自行点击“后退”按钮, 这种做法既糟糕又不专业。如果在现实的案例中,我们这样子编写,那么Django的优
问题内容: 我一直在South的网站,Google和SO上寻找答案,但是找不到简单的方法来做到这一点。 我想使用South重命名Django模型。说你有以下几点: 并且你想要将转换为,即 为简单起见,我只是尝试将名称从更改为,但现在忽略其中的成员。 使用South进行此操作最简单的方法是什么? 我可能可以进行数据迁移,但这似乎很复杂。 编写一个自定义迁移,例如,但是在这种情况下我不确定如何修复外键
本书所讲的是 Django:一款能够节约你的时间并且让开发乐趣横生的 web 开发框架。使用 Django,花极少时间即可构建和维护质量上乘的 Web 应用。 从好的方面来看,Web 开发激动人心且富于创造性;从另一面来看,它却是份繁琐而令人生厌的工作。通过减少重复的代码,Django 使你能够专注于 web 应用上有 趣的关键性的东西。为了达到这个目标,Django 提供了通用 Web 开发模式
你好,欢迎来到这门《Django 框架》教程,这个教程会带你学习 Python 著名的 Web 开发框架 Django。这节课我们会详细介绍 Django 框架的发展历程以及 Django 框架的优缺点,并对其他 Web 开发框架做一个简单的对比。有的同学可能只学习了基础语法,对框架的概念不太了解,不用担心,你可以先看一下这篇文章,对 Django 框架有一个大致的了解,后面的小节我们对“什么是框
我能够使用以下步骤重置Django PostgreSQL数据库: 删除迁移文件 我目前正在对我的模型进行更改,并测试每个更改。我没有任何需要保留的数据。当迁移不起作用时,有没有比上述更简单的方法来重置数据库? 我至少想用其他东西来代替步骤2,这样我就可以跳过步骤3-5。