自定義Django Form中choicefield下拉菜單選取數(shù)據(jù)庫內(nèi)容實(shí)例
工作中遇到的問題,自定義了一個forms.form表單,某項(xiàng)需要作出下拉菜單,下拉菜單中的選項(xiàng)需要從數(shù)據(jù)庫(objectForm models)中提取.
form.py為:
class objectForm(forms.Form):pre = choicefield(lable = '工作')
最后的解決辦法:
1.定義一個函數(shù)
def get_object(request): r = [(’’, ’----’)] for obj in objectModels.objects.all(): r = r + [(obj.id, obj.name)] return r
2.在views.py的視圖函數(shù)中加入
form.fields[’pre’].choices = get_object(request)
收工!
百度了很多Django Form的問題都沒有得到解決,寫出來方便后來人。
補(bǔ)充知識:django form表單select下拉菜單數(shù)據(jù)源實(shí)時更新(每次訪問獲取一次數(shù)據(jù)庫內(nèi)容)
重點(diǎn)是: Form類對象實(shí)例化的時候,在類里邊__init()__函數(shù)中加入重新更新select數(shù)據(jù)源
from django.shortcuts import render,redirectfrom app3 import modelsfrom app3 import formfrom django import formsfrom django.forms import widgets #靜態(tài)字段,value_list獲取列表[()]加元組返回值 class Fromdb(forms.Form): purpose = forms.CharField() user = forms.IntegerField( widget=widgets.Select() ) #保證每次訪問重新獲取最新數(shù)據(jù) def __init__(self,*args,**kwargs): super(Fromdb,self).__init__(*args,**kwargs) self.fields['user'].widget.choices=models.Stu.objects.values_list('id', 'name') def formdb(request): stus = Fromdb() return render(request,'formdb.html',{'stus':stus})
以上這篇自定義Django Form中choicefield下拉菜單選取數(shù)據(jù)庫內(nèi)容實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. python selenium 獲取接口數(shù)據(jù)的實(shí)現(xiàn)2. java 優(yōu)雅關(guān)閉線程池的方案3. 詳解idea中web.xml默認(rèn)版本問題解決4. asp知識整理筆記4(問答模式)5. jsp實(shí)現(xiàn)textarea中的文字保存換行空格存到數(shù)據(jù)庫的方法6. ASP實(shí)現(xiàn)加法驗(yàn)證碼7. jsp EL表達(dá)式詳解8. Python matplotlib 繪制雙Y軸曲線圖的示例代碼9. 利用ajax+php實(shí)現(xiàn)商品價格計(jì)算10. JSP頁面實(shí)現(xiàn)驗(yàn)證碼校驗(yàn)功能
