python下拉菜单_自定义Django Form中choicefield下拉菜单选取数据库内容实例
工作中遇到的問題,自定義了一個(gè)forms.form表單,某項(xiàng)需要作出下拉菜單,下拉菜單中的選項(xiàng)需要從數(shù)據(jù)庫(kù)(objectForm models)中提取.
form.py為:
class objectForm(forms.Form):
pre = choicefield(lable = "工作")
最后的解決辦法:
1.定義一個(gè)函數(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的問題都沒有得到解決,寫出來(lái)方便后來(lái)人。
補(bǔ)充知識(shí):django form表單select下拉菜單數(shù)據(jù)源實(shí)時(shí)更新(每次訪問獲取一次數(shù)據(jù)庫(kù)內(nèi)容)
重點(diǎn)是: Form類對(duì)象實(shí)例化的時(shí)候,在類里邊__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ù)庫(kù)內(nèi)容實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
總結(jié)
以上是生活随笔為你收集整理的python下拉菜单_自定义Django Form中choicefield下拉菜单选取数据库内容实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: long类型怎么转换成string_Py
- 下一篇: python爬虫分析_Python爬虫解