[django] ORM Admin

  1. 扩展

    1.触发Model中的验证和错误提示有两种方式:
        a. Django Admin中的错误信息会优先根据Admiin内部的ModelForm错误信息提示,如果都成功,才来检查Model的字段并显示指定错误信息
        b. 调用Model对象的 clean_fields 方法,如:
            # models.py
            class UserInfo(models.Model):
                nid = models.AutoField(primary_key=True)
                username = models.CharField(max_length=32)
    
                email = models.EmailField(error_messages={'invalid': '格式错了.'})
    
            # views.py
            def index(request):
                obj = models.UserInfo(username='11234', email='uu')
                try:
                    print(obj.clean_fields())
                except Exception as e:
                    print(e)
                return HttpResponse('ok')
    
           # Model的clean方法是一个钩子,可用于定制操作,如:上述的异常处理。
    
    2.Admin中修改错误提示
        # admin.py
        from django.contrib import admin
        from model_club import models
        from django import forms
    
    
        class UserInfoForm(forms.ModelForm):
            username = forms.CharField(error_messages={'required': '用户名不能为空.'})
            email = forms.EmailField(error_messages={'invalid': '邮箱格式错误.'})
            age = forms.IntegerField(initial=1, error_messages={'required': '请输入数值.', 'invalid': '年龄必须为数值.'})
    
            class Meta:
                model = models.UserInfo
                # fields = ('username',)
                fields = "__all__"
    
    
        class UserInfoAdmin(admin.ModelAdmin):
            form = UserInfoForm
    
        admin.site.register(models.UserInfo, UserInfoAdmin)
    
posted @ 2019-10-08 16:55  Moke丶青  阅读(78)  评论(0编辑  收藏  举报