您的位置:首页 > 编程语言 > Go语言

django modeForm总结!

2015-10-29 11:44 525 查看
从前台通过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的字段会将数据库里大写的字段变成小写。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: