django modeForm总结!
2015-10-29 11:44
525 查看
从前台通过ajax将整个model的字段发送过来,在view层肯定是可以直接操作model来保存删除记录的,而不需要一个个将字段取出然后自己动手对应到model上
model类:
此时将post的所有数据都直接填充进modelForm然后保存就可以直接达到操作model的效果;
执行成功之后数据库增加了一条menu的记录。
如果is_valid()报错可以单步调试查看他的errors:
前端需要注意的是:
发送ajax时候,key需要和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的字段会将数据库里大写的字段变成小写。
相关文章推荐
- 收藏的兼容各浏览器的日历控件(ie6-11\ff\google\safri)
- django models 晋级
- django rest framework - 数据解析
- Sublime Text3 + Golang搭建开发环境
- jango.contrib.sessions-SessionBase
- django.session-middleware
- django-admin sites
- django.core-validators
- django.forms.widget-ChoiceFieldRenderer
- django.forms.widget-ChoiceInput
- Hello,Algorithm!(你好,算法!)
- django.forms-Widget和Media间的联系
- dajngo.forms.widget-Media
- django signal 拾遗
- Proof for Floyd-Warshall's Shortest Path Derivation Algorithm Also Demonstrates the Hierarchical Path Construction Process
- django.relatedField-关联域
- django.contrib.auth.backend-后台
- google-io-2014
- django.contirb.auth-认证
- google guava