django modeForm总结!

从前台通过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:

# modelForm
class 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值