django modeForm总结!

来源:互联网 发布:boss软件 编辑:程序博客网 时间:2024/06/04 17:42

从前台通过ajax将整个model的字段发送过来,在view层肯定是可以直接操作model来保存删除记录的,而不需要一个个将字段取出然后自己动手对应到model上

model类:

class SysMenu(models.Model):    id = models.CharField(db_column='ID', primary_key=True, max_length=50)  # Field name made lowercase.    menuno = models.CharField(db_column='MenuNo', max_length=50)  # Field name made lowercase.    parentid = models.CharField(db_column='ParentID', max_length=50, blank=True, null=True)  # Field name made lowercase.    menuorder = models.CharField(db_column='MenuOrder', max_length=50, blank=True, null=True)  # Field name made lowercase.    name = models.CharField(db_column='Name', max_length=200)  # Field name made lowercase.    icon = models.CharField(db_column='Icon', max_length=500, blank=True, null=True)  # Field name made lowercase.    url = models.CharField(db_column='URL', max_length=500, blank=True, null=True)  # Field name made lowercase.    isleaf = models.BooleanField(db_column='IsLeaf')  # Field name made lowercase. This field type is a guess.    isvisiable = models.BooleanField(db_column='IsVisiable')  # Field name made lowercase. This field type is a guess.    level = models.IntegerField(db_column='Level')  # Field name made lowercase.    def __unicode__(self):        return self.name    class Meta:        managed = False        db_table = 'sys_menu'
之后要建立model类对象的modelForm:

# modelFormclass SysMenuForm(ModelForm):    class Meta:        model = SysMenu        fields = '__all__'
然后再view层就可以直接调用modelForm来达到整体操作model的效果:
def add_menu(request):    if request.method == 'POST':        _sysmenu_form = SysMenuForm(request.POST)        _ss = _sysmenu_form.is_valid()        if _sysmenu_form.is_valid():            _sysmenu_form.Meta.model.id=uuid.uuid1()            exam_info = _sysmenu_form.save()            exam_info.save()            return HttpResponse("{'IsError':false,'ErrorMsg':'添加菜单成功!'}")        else:            return  HttpResponse("{'IsError':true,'ErrorMsg':'get请求错误!'}")

此时将post的所有数据都直接填充进modelForm然后保存就可以直接达到操作model的效果;

执行成功之后数据库增加了一条menu的记录。

如果is_valid()报错可以单步调试查看他的errors:



前端需要注意的是:

发送ajax时候,key需要和model的字段对应并且注意大小写,一般model的字段会将数据库里大写的字段变成小写。

0 0
原创粉丝点击