目錄用form元件生成下拉框時,通常下拉框內的資料從資料庫中獲取。當在資料庫中更新或者新增資料時,發現在重新整理瀏覽器頁面時,下拉框內的資料無變化。需要重新啟動django在實際中這是不合理的
# views.py
class test2form(forms.form):
user = fields.choicefield(choices=models.userinfo.objects.values_list('id','username'))
def test2(request):
obj = test2form()
return render(request,'test2.html',)
# 資料庫
id username email
1 小白 [email protected]
2 小花 [email protected]
# html
姑娘:}
step1:django啟動時,class類就會執行,下拉框中獲取資料庫中的資料
step2:新增或修改資料庫中的資料,重新整理瀏覽器頁面。下拉框中的資料不隨著更新
step3:因為在重新整理頁面時,class中的類屬性並不會再重新生成,所以一直保留最開始的資料
class test2form(forms.form):
user = fields.choicefield()
# 在類中定義__init__()函式
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
# self.fields必須寫在super()下面。因為super會將類屬性全拷貝,self.filelds才能取到值
self.fields['user'].choices=models.userinfo.objects.values_list('id','username')
def test2(request):
obj = test2form()
return render(request,'test2.html',)
使用django自帶的modelchoicefield欄位生成下拉框。看起來似乎比方法一簡單,但是不推薦使用。因為需要在models中寫str方法。如果在另乙個的下拉框中要顯示別的欄位就不好操作了,與models耦合度高
from django.forms.models import modelchoicefield # 需要匯入
class test2form(forms.form):
user = modelchoicefield(queryset=models.userinfo.objects.all(),to_field_name='username')
'''queryset, # 查詢資料庫中的資料
empty_label="---------", # 預設空顯示內容
to_field_name=none, # html中option中value的值對應的字段
'''在瀏覽器頁面下拉框中顯示 '表名 object' ,所以還需要修改model.py檔案
# models.py
class userinfo(models.model):
username=models.charfield(max_length=32)
email=models.emailfield(max_length=32)
def __str__(self):
return self.username
Djago Form元件動態繫結資料
用form元件生成下拉框時,通常下拉框內的資料從資料庫中獲取。當在資料庫中更新或者新增資料時,發現在重新整理瀏覽器頁面時,下拉框內的資料無變化。需要重新啟動django在實際中這是不合理的 views.py class test2form forms.form user fields.choicef...
Vue 遞迴元件與動態樣式繫結
元件是可以在自己的模板中呼叫自身的,不過它們只能通過name選項 item v for item,index in list key index item back span item title border bottom div item.children class item children...
jquery 上傳元件如何動態繫結引數傳遞到後台
upload photo uploadify onuploadstart function file onuploadsuccess function file,data,response 動態傳遞引數需要通過紅色部分實現 1 首先新增onuploadstart函式,在上傳開始時設定引數 2 通過 ...