自定義Django Form中choicefield下拉菜單選取數(shù)據(jù)庫內(nèi)容實例
工作中遇到的問題,自定義了一個forms.form表單,某項需要作出下拉菜單,下拉菜單中的選項需要從數(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的問題都沒有得到解決,寫出來方便后來人。
補充知識:django form表單select下拉菜單數(shù)據(jù)源實時更新(每次訪問獲取一次數(shù)據(jù)庫內(nèi)容)
重點是: Form類對象實例化的時候,在類里邊__init()__函數(shù)中加入重新更新select數(shù)據(jù)源
from django.shortcuts import render,redirect
from app3 import models
from app3 import form
from django import forms
from 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)容實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python工具模塊介紹之time?時間訪問和轉(zhuǎn)換的示例代碼
這篇文章主要介紹了python工具模塊介紹-time?時間訪問和轉(zhuǎn)換,本文通過示例代碼給大家介紹的非常詳細(xì),對大家啊的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04
pyspark.sql.DataFrame與pandas.DataFrame之間的相互轉(zhuǎn)換實例
今天小編就為大家分享一篇pyspark.sql.DataFrame與pandas.DataFrame之間的相互轉(zhuǎn)換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
解決python問題 Traceback (most recent call&n
這篇文章主要介紹了解決python問題 Traceback (most recent call last),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12
Python?Flask實現(xiàn)快速構(gòu)建Web應(yīng)用的方法詳解
Flask是一個輕量級的Web服務(wù)器網(wǎng)關(guān)接口(WSGI)web應(yīng)用框架,本文將和大家一起詳細(xì)探討一下Python?Flask?Web服務(wù),需要的小伙伴可以學(xué)習(xí)一下2023-06-06
python3.7 openpyxl 刪除指定一列或者一行的代碼
這篇文章主要介紹了python3.7 openpyxl 刪除指定一列或者一行,文中通過代碼給大家介紹了python3 openpyxl基本操作,代碼簡單易懂,需要的朋友可以參考下2019-10-10

