一:html
from django.shortcuts import render from django import forms from app01 import models from django.forms.models import ModelChoiceField class UserModelForm(forms.Form): name=forms.ChoiceField(models.UserInfo.objects.values_list('id','name')) def index(request): form=UserModelForm() return render(request,'userinfo.html',{'form':form})
二:數據庫
from django.shortcuts import render from django import forms from app01 import models from django.forms.models import ModelChoiceField class UserModelForm(forms.Form): name=forms.ChoiceField() def __init__(self,*args,**kwargs): super(UserModelForm, self).__init__(*args,**kwargs) self.fields['name'].choices=models.UserInfo.objects.values_list('id','name') def index(request): form=UserModelForm() return render(request,'userinfo.html',{'form':form})
三:django
from django.shortcuts import render from django import forms from app01 import models from django.forms.models import ModelChoiceField # Create your views here. class UserModelForm(forms.Form): name=ModelChoiceField(queryset=models.UserInfo.objects.all()) def index(request): form=UserModelForm() return render(request,'userinfo.html',{'form':form})
一中在程序啓動後會將數據庫信息放入緩存,所以提供給用戶的信息不會隨着數據庫信息的更新而更新緩存
二和三提供給用戶的信息會隨着數據庫信息的更新而更新,由於二中用戶每次訪問都會建立新的form對象app
choicefield接受的數據類型爲[()] 或(())spa
ModelChoiceField接受的數據類型爲querysetcode
生成標籤的name屬性爲form的字段名,id爲id_+字段名,value爲元組第一個信息,文本內容爲元祖第二個信息orm