您好,登錄后才能下訂單哦!
這篇文章給大家介紹Modelforms如何在Django中使用,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
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/")
關于Modelforms如何在Django中使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。