1. 程式人生 > 程式設計 >自定義Django Form中choicefield下拉選單選取資料庫內容例項

自定義Django Form中choicefield下拉選單選取資料庫內容例項

工作中遇到的問題,自定義了一個forms.form表單,某項需要作出下拉選單,下拉選單中的選項需要從資料庫(objectForm models)中提取.

form.py為:

class objectForm(forms.Form):
pre = choicefield(lable = "工作")

最後的解決辦法:

1.定義一個函式

def get_object(request):
  r = [('','----')]
  for obj in objectModels.objects.all():
    r = r + [(obj.id,obj.name)]
  return r

2.在views.py的檢視函式中加入

form.fields['pre'].choices = get_object(request)

收工!

百度了很多Django Form的問題都沒有得到解決,寫出來方便後來人。

補充知識:django form表單select下拉選單資料來源實時更新(每次訪問獲取一次資料庫內容)

重點是: Form類物件例項化的時候,在類裡邊__init()__函式中加入重新更新select資料來源

from django.shortcuts import render,redirect
from app3 import models
from app3 import form
from django import forms
from django.forms import widgets
 
#靜態欄位,value_list獲取列表[()]加元組返回值
 
 
class Fromdb(forms.Form):
  purpose = forms.CharField()
  user = forms.IntegerField(
    widget=widgets.Select()
    )
  #保證每次訪問重新獲取最新資料
  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下拉選單選取資料庫內容例項就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。