美文网首页测试开发
Django_定制form表单字段的choice从数据库取值

Django_定制form表单字段的choice从数据库取值

作者: 古佛青灯度流年 | 来源:发表于2018-04-28 09:33 被阅读2次

    自定义了一个forms.form表单,某项需要作出下拉菜单,下拉菜单中的选项需要从数据库(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__()函数中返回你下拉菜单需要显示的字段
    

    我用第二种方法具体实现:

    // 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')
    )
    

    @@@@ 第一种方法实现的时候,view那里校验总是不通过,不知道为啥,路过的知道的留言告诉我一下,谢谢。

    相关文章

      网友评论

        本文标题:Django_定制form表单字段的choice从数据库取值

        本文链接:https://www.haomeiwen.com/subject/zriwlftx.html