modelform是model衍生出來的form .
modelform的用法非常死.
首先在models.py裡建立模型表.
所有的form元件單獨放在form.py檔案,其他地方引入form就可以.
建立modelfrom
只要告訴modelform哪乙個模型表,它會自動幫我們比對www.cppcns.commodels模型表字段,並衍生成form元件.它不光給我們提供form元件,還有元件沒有的功能.
所有欄位都生成form元件.
fields="__all__"
username和password欄位生成form元件.
fields=['username','password']
排除gender欄位以外都生成form元件.
exclude=['gender']
modelform用在兩個地方,乙個是新增,乙個是編輯.
新增資料
form新增資料先從form取資料,然後在用models插入資料.
modelform直接form.s**e()就可以插入資料.
編輯資料get請求.
form傳值給模板的時候要新增instance資料,否則模板渲染的時候value是空的.
編輯資料post請求.
form.s**e()的時候要給form新增instance資料,否則會變成create操作,不是update更新操作.
知識點擴充套件
建立類from django.forms import modelform
from django.forms import widgets as wd
from app01 import models
class 類名(modelform):
class udpqtxivlmeta:
model = models.表名 #models中的表名
fields="__all__", # 字段
exclude=none, &nb # 排除字段
widgets=none, # 自定義外掛程式
error_messages=none, # 自定義錯誤資訊(整體錯誤資訊from django.core.excepti程式設計客棧ons import non_field_errors)
def clean_欄位名 #自定義鉤子函式
例項化物件
form = 類名(instance=obj,data=request.post)
instance傳的是已有的物件(在頁面中顯示預設值)
data傳的是從頁面返回過來的值(使用者輸入的值 ,用來驗證)
form.is_valid() #驗證
form.s**e #將資料儲存至資料庫中(如果有iudpqtxivlnstance引數就修改資料庫中的記錄,如果沒有instance引數就在資料庫中新增新的一條記錄)
本文標題: django中modelform元件例項用法總結
本文位址:
django中restframework巢狀序列化
問題 定義好了序列化器後有沒有遇到過想要序列化的資料表中有外來鍵的情況,我們需要的這個和外來鍵關聯的資料 model.py 報警表 class police models.model 報警型別 police models.charfield max length 50 開始範圍 begin mode...
django基礎 django中的app應用
urlpatterns path lw2 views.lw2 先設定子路由和乙個實現登入功能頁面 login.html 使用者名稱 密碼 通過request.post.get 方法可以返回使用者登入時的資訊,根據資訊來判斷和進行下一事件。如果登入資訊與資料庫中資訊不相匹配,則重新返回新的登入頁面。此...
django 重新整理快取 Django 中的快取問題
django 中的快取問題 簡單介紹 在動態 中,使用者所有的請求,伺服器都會去資料庫中進行相應的增,刪,查,改,渲染模板,執行業務邏輯,最後生成使用者看到的頁面.當乙個 的使用者訪問量很大的時候,每一次的的後台操作,都會消耗很多的服務端資源,所以必須使用快取來減輕後端伺服器的壓力.快取是將一些常用...