這篇文章給大家介紹Modelforms如何在Django中使用,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、冀州網(wǎng)絡(luò)推廣、小程序定制開發(fā)、冀州網(wǎng)絡(luò)營銷、冀州企業(yè)策劃、冀州品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供冀州建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.comfrom django.forms import ModelForm class Test(ModelForm): # 把那張表轉(zhuǎn)化成form組件 class Meta: # 這個(gè)意思即是把Article轉(zhuǎn)化成form組件 model = models.Article # 把表中的所有的字段都做轉(zhuǎn)化,這里也可以傳遞一個(gè)list,可以指定顯示某些字段 fields = "__all__" # modelform組件的使用方法和forms組件的用法一樣,但是i如果要保存出數(shù)據(jù)的時(shí)候,可以直接調(diào)用save方法保存就可以了,無論是單表,一對多,還是多對多 # 如果增加數(shù)據(jù) # form = Test(request.POST) # if form.isvalid(): # form.save() # 這樣就可以直接保存 # 如果編輯數(shù)據(jù),用下面的方法就可以把當(dāng)前的對象的值渲染到form表單中,無論是單表,一對多,還是多對多 # obj = models.Article.objects.all().first() # form = Test(instance=obj) # 上面是實(shí)現(xiàn)渲染數(shù)據(jù)到form表單 # form = Test(request.POST,instance=obj) # if form.isvalid(): # form.save() # 這個(gè)就是實(shí)現(xiàn)更新操作,和增加操作唯一的區(qū)別就是通過instance傳遞一個(gè)要編輯的對象進(jìn)去就可以了
簡單的用了一下model_forms,覺得還是不是很好用
我是用書、出版社,作者三張表來做這個(gè)聯(lián)系
首先下面這個(gè)函數(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
下面這個(gè)類就是modelform的類
class test(ModelForm): class Meta: model = models.Book fields = "__all__" labels = {"title":"書籍的名稱","auther":"作者","publish":"出版社"} error_messages = { "title":{"required":"不允許為空", "invalid":"格式錯(cuò)誤" } } widgets = { "title":wd.TextInput(attrs={"placeholder":"密碼"}) } field_classes = { "title":forms.EmailField }
下面這個(gè)函數(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("出錯(cuò)了") model_form_obj = test(request.POST) return render(request, "modelfrom_add.html", locals())
下面這個(gè)函數(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/")
關(guān)于Modelforms如何在Django中使用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。