django的Form三

作者: 赖三石 | 来源:发表于2017-07-25 21:10 被阅读0次

常用选择插件

# 单radio,值为字符串 
# user = fields.CharField( 
#     initial=2, 
#     widget=widgets.RadioSelect(choices=((1,'上海'),(2,'北京'),)) 
# ) 
 
# 单radio,值为字符串 
# user = fields.ChoiceField( 
#     choices=((1, '上海'), (2, '北京'),), 
#     initial=2, 
#     widget=widgets.RadioSelect 
# ) 
 
# 单select,值为字符串 
# user = fields.CharField( 
#     initial=2, 
#     widget=widgets.Select(choices=((1,'上海'),(2,'北京'),)) 
# ) 
 
# 单select,值为字符串 
# user = fields.ChoiceField( 
#     choices=((1, '上海'), (2, '北京'),), 
#     initial=2, 
#     widget=widgets.Select 
# ) 
 
# 多选select,值为列表 
# user = fields.MultipleChoiceField( 
#     choices=((1,'上海'),(2,'北京'),), 
#     initial=[1,], 
#     widget=widgets.SelectMultiple 
# ) 
 
 
# 单checkbox 
# user = fields.CharField( 
#     widget=widgets.CheckboxInput() 
# ) 
 
 
# 多选checkbox,值为列表 
# user = fields.MultipleChoiceField( 
#     initial=[2, ], 
#     choices=((1, '上海'), (2, '北京'),), 
#     widget=widgets.CheckboxSelectMultiple 
# ) 

在使用选择标签时,需要注意choices的选项可以从数据库中获取,但是由于是静态字段 获取的值无法实时更新,那么需要自定义构造方法从而达到此目的。

models.py

class UserType(models.Model):
    caption = models.CharField(max_length=32)

class UserInfo(models.Model):
    username = models.CharField(max_length=32)
    email = models.EmailField()
    user_type = models.ForeignKey(to='UserType',to_field='id')

方式一:

from django.forms import Form 
from django.forms import widgets 
from django.forms import fields 
  
class UserInfoForm(forms.Form):
    username = Ffields.CharField(max_length=32)
    email = Ffields.EmailField()
    user_type = Ffields.ChoiceField(
        choices=models.UserType.objects.values_list('id','caption')
    )

    def __init__(self, *args, **kwargs):
        super(UserInfoForm,self).__init__(*args, **kwargs)
        self.fields['user_type'].choices = models.UserType.objects.values_list('id','caption')

方式二:
使用django提供的ModelChoiceField和ModelMultipleChoiceField字段来实现

from django import forms 
from django.forms import fields 
from django.forms import widgets 
from django.forms import models as form_model  #这里models重复,注意
 
class FInfo(forms.Form): 
    authors = form_model.ModelMultipleChoiceField(queryset=models.NNewType.objects.all()) 
    # authors = form_model.ModelChoiceField(queryset=models.NNewType.objects.all()) 

相关文章

  • Form类学习笔记

    Django的表单功能由Form类实现 分为两种 django.forms.Form 和 Django.forms...

  • 10 Form表单

    一:什么是Form?什么是Django Form Django的表单系统中,所有的表单类都作为django.for...

  • django的Form三

    常用选择插件 在使用选择标签时,需要注意choices的选项可以从数据库中获取,但是由于是静态字段 获取的值无法实...

  • Python Form组件

    Django之Form组件

  • Django教程(三)- Django表单Form

    目录: Django教程(一)- Django视图与网址Django教程(二)- Django视图与网址进阶Dja...

  • Python Web开发系列课程之——初探 Django Adm

    【前置课程】Django中Form的妙用 Django Admin 是 Django 框架中最受欢迎的特性之一。该...

  • django_Form组件基本用法

    一、Form组件初识 引用类from django import forms 继承forms.Form 继承后里面...

  • form表单Django

    在Django 中构建一个表单 Form 类 初始化form组件需要继承Form,username 相当于在创建的...

  • furoba web

    TODO use django form database modify (user management, fa...

  • Django ModelForm and Form

    django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm 关...

网友评论

    本文标题:django的Form三

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