自定義了一個forms.form表單,某項需要作出下拉菜單,下拉菜單中的選項需要從數(shù)據(jù)庫(models)中提取.
方法一:
queue = forms.ModelChoiceField(label=u'隊列',queryset=Queue.objects.all())
方法二:
class ServerForm(forms.Form):
queue = forms.ChoiceField(label=u'隊列')
def __init__(self,*args,**kwargs):
super(ServerForm,self).__init__(*args,**kwargs)
self.fields['queue'].choices=((x.que,x.disr) for x in Queue.objects.all())
注意:在Queue模型的__unicode__()函數(shù)中返回你下拉菜單需要顯示的字段
我用第二種方法具體實現(xiàn):
// model.py
from django.db import models
class allow_list(models.Model):
mac = models.CharField('終端mac',max_length=50,help_text='終端mac')
utime = models.DateTimeField('更新時間',auto_now_add=True,help_text='更新時間')
class Meta:
"""
"""
verbose_name = '強制下線-第三方允許操作表'
verbose_name_plural = verbose_name
def __unicode__(self):
return self.mac
//form.py
class AddForm(forms.Form):
mac = forms.ChoiceField(label='請選擇終端mac')
def __init__(self, *args, **kwargs):
super(AddForm, self).__init__(*args, **kwargs)
self.fields['mac'].choices = ((x['mac'], x['mac']) for x in models.allow_list.objects.all().values('mac')
)
@@@@ 第一種方法實現(xiàn)的時候,view那里校驗總是不通過,不知道為啥,路過的知道的留言告訴我一下,謝謝。