码迷,mamicode.com
首页 > 其他好文 > 详细

django Form的回顾--手动档和自动挡

时间:2017-10-27 19:12:01      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:lis   数据库查询   使用   mil   配置   .sh   family   object   span   

 
from django.shortcuts import render
from django.forms import Form
from django.forms import fields
from django.forms import widgets
from django.forms.models import ModelChoiceField
from rbac import models

 
手动档:
class UserInfoModelForm(Form):
    name = fields.CharField(required=Trueerror_messages={"required""用户名不能为空"})
    email = fields.EmailField(required=True)

    这样写不能时时更新,因为它是静态字段,只会在声明这个class的时候访问数据库一次
    # part = fields.ChoiceField(choices=models.Role.objects.value_list("id","caption"))
    part = fields.ChoiceField()

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        此种方式下,每次new form对象,都会执行数据库查询,数据时时更新
        self.fields["part"].choices = models.Role.objects.value_list("id""caption")
 
自动档:
class UserInfoModelForm(Form):
    name = fields.CharField(required=Trueerror_messages={"required""用户名不能为空"})
    email = fields.EmailField(required=True)

    此种方式和手动挡效果一样,但是它会默认将model_obj中的pk作为select选择optionvalue,不能配置,不推荐使用
    part = ModelChoiceField(queryset=models.Role.objects.all())


def index(request):
    form = UserInfoModelForm()
    return render(request,"index.html",{"from":form})
 
 
 

django Form的回顾--手动档和自动挡

标签:lis   数据库查询   使用   mil   配置   .sh   family   object   span   

原文地址:http://www.cnblogs.com/jec1999/p/7744750.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!