zoukankan      html  css  js  c++  java
  • Django——ModelForm(建立,参数,自定义错误验证)

    ModelForm(强大的数据验证,适中的数据库操作)

    Form:
    UserForm -> Form -> BaseForm

    ModelForm:
    UserModelForm -> ModelForm -> BaseModelForm -> BaseForm

    添加信息

    修改信息

     1 from django import forms
     2 from cmdb import models
     3 
     4 class UserModelForm(forms.ModelForm):
     5     class Meta:
     6         model = models.User
     7         fields = "__all__"
     8 
     9 
    10 def add(request):
    11     if request.method == "GET":
    12         obj = UserModelForm()
    13         return render(request,'mf.html',{'obj': obj})
    14     elif request.method == "POST":
    15         obj = UserModelForm(request.POST)
    16         if obj.is_valid():
    17             # print(obj.cleaned_data)
    18             # models.User.objects.create(**obj.cleaned_data)
    19             obj.save(commit=True)
    20             """
    21             mobj = obj.save(commit=False)
    22             mobj.save()
    23             obj.save_m2m()
    24             """
    25         print(obj.errors)
    26         return render(request, 'mf.html', {'obj': obj})
    27 
    28 def edit(request,nid):
    29     if request.method == "GET":
    30         model_obj = models.User.objects.get(id=nid)
    31         obj =UserModelForm(instance=model_obj)
    32         return render(request, 'mf1.html', {'obj': obj,'nid': nid})
    33     elif request.method == 'POST':
    34         model_obj = models.User.objects.get(id=nid)
    35 
    36         obj = UserModelForm(request.POST, instance=model_obj)
    37         if obj.is_valid():
    38             obj.save()
    39         return render(request, 'mf1.html', {'obj': obj})
    View Code

    model+form ==> 验证+数据库操作

    a. 因为用的字段是model里的,所以要在model里配置参数等

    b.在modelform中写参数

    class Meta:		# 在modelform里的参数都是{}格式的,而且参数之间不加逗号
        model,                           # 对应Model的
        fields=None,                     # 字段
        exclude=None,                    # 排除字段
        labels=None,                     # 提示信息
        help_texts=None,                 # 帮助提示信息
        widgets=None,                    # 自定义插件
        error_messages=None,             # 自定义错误信息(整体错误信息from django.core.exceptions import NON_FIELD_ERRORS)
        field_classes=None               # 自定义字段类 (也可以自定义字段)
        localized_fields=('birth_date',) # 本地化,如:根据不同时区显示数据
        如:
            数据库中
                2016-12-27 04:10:57
            setting中的配置
                TIME_ZONE = 'Asia/Shanghai'
                USE_TZ = True
            则显示:
                2016-12-27 12:10:57
    

    自定义验证:

    3个属性(is_vaild,errors,cleaned_data)和3个钩子(自定义错误验证)和form一样

  • 相关阅读:
    MSP430的IAP程序在线编程学习
    新手入门Underscore.js 中文(template)
    关于javascript中的变量声明与赋值
    DOJO复选框操作
    添加.MSPX文件(VISTA下)
    TFS集合创建
    ExtJS的导航栏(Accordion TreePanel)
    新的开始,新的起点
    MongoDB实践之路安装
    检测一个文件是否正在使用
  • 原文地址:https://www.cnblogs.com/x54256/p/7823015.html
Copyright © 2011-2022 走看看