Django的Modelforms用法簡介
更新時間:2019年07月27日 09:46:48 作者:bainianminguo
這篇文章主要介紹了Django的Modelforms用法簡介,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
from django.forms import ModelForm
class Test(ModelForm):
# 把那張表轉化成form組件
class Meta:
# 這個意思即是把Article轉化成form組件
model = models.Article
# 把表中的所有的字段都做轉化,這里也可以傳遞一個list,可以指定顯示某些字段
fields = "__all__"
# modelform組件的使用方法和forms組件的用法一樣,但是i如果要保存出數(shù)據(jù)的時候,可以直接調(diào)用save方法保存就可以了,無論是單表,一對多,還是多對多
# 如果增加數(shù)據(jù)
# form = Test(request.POST)
# if form.isvalid():
# form.save()
# 這樣就可以直接保存
# 如果編輯數(shù)據(jù),用下面的方法就可以把當前的對象的值渲染到form表單中,無論是單表,一對多,還是多對多
# obj = models.Article.objects.all().first()
# form = Test(instance=obj)
# 上面是實現(xiàn)渲染數(shù)據(jù)到form表單
# form = Test(request.POST,instance=obj)
# if form.isvalid():
# form.save()
# 這個就是實現(xiàn)更新操作,和增加操作唯一的區(qū)別就是通過instance傳遞一個要編輯的對象進去就可以了

簡單的用了一下model_forms,覺得還是不是很好用
我是用書、出版社,作者三張表來做這個聯(lián)系
首先下面這個函數(shù)是用來展示書籍信息
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
}
下面這個函數(shù)是用來處理處理添加書籍的操作
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())
下面這個函數(shù)是用來處理編輯書籍的
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/")
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Python中Django框架下的staticfiles使用簡介
這篇文章主要介紹了Python中Django框架下的staticfiles使用簡介,staticfiles是一個幫助Django管理靜態(tài)資源的工具,需要的朋友可以參考下2015-05-05
使用python將請求的requests headers參數(shù)格式化方法
今天小編就為大家分享一篇使用python將請求的requests headers參數(shù)格式化方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python Numpy教程之排序,搜索和計數(shù)詳解
這篇文章主要為大家詳細介紹了Python?NumPy中排序,搜索和計數(shù)的實現(xiàn),文中的示例代碼講解詳細,對我們學習Python有一定幫助,需要的可以參考一下2022-08-08

