modelform 使用

Django ModelForm详解与应用
本文详细介绍了Django框架中ModelForm的使用方法,包括如何构建ModelForm、添加和编辑书籍实例的具体步骤,以及如何在视图和模板中渲染和处理ModelForm,为读者提供了全面的Django ModelForm实践指南。

modelForm (
1) model的知识点: class UserInfo(AbstractUser): tel = models.CharField(max_length=32) gender = models.IntegerField(choices=((1, ""), (2, "")), default=1) yuan = UserInfo.objects.get(pk=1) yuan.get_gender_display() (2) modelform使用 model.py: class Book(models.Model): nid = models.AutoField(primary_key=True) title = models.CharField(max_length=32) price = models.DecimalField(max_digits=8, decimal_places=2) # 999999.99 pub_date = models.DateTimeField() # "2012-12-12" # comment_count=models.IntegerField(default=100) # poll_count=models.IntegerField(default=100) publish = models.ForeignKey(to="Publish", on_delete=models.CASCADE) # 级联删除 authors = models.ManyToManyField(to="Author") def __str__(self): return self.title form.py: # 构建modelform class BookModelForm(forms.ModelForm): class Meta: model = Book fields = "__all__" ''' BookModelForm等同于: class BookForm(forms.Form): title=forms.CharField(max_length=32) price=forms.IntegerField() pub_date=forms.DateField(widget=widgets.TextInput(attrs={"type":"date"})) #publish=forms.ChoiceField(choices=[(1,"AAA"),(2,"BBB")]) publish=forms.ModelChoiceField(queryset=Publish.objects.all()) authors=forms.ModelMultipleChoiceField(queryset=Author.objects.all()) ''' 逻辑: 添加书籍: def add(reqeust): if GET请求: form = BookModelForm() return render(reqeust, {"form": form}) ''' 渲染页面 <form action="" method="post" novalidate> {% csrf_token %} {% for field in form %} <div class="form-group"> <label for="title">{{ field.label }}</label> {{ field }} <span>{{ field.errors.0 }}</span> </div> {% endfor %} <input type="submit" value="提交" class="btn btn-default pull-right"> </form> ''' else POST请求: form = BookModelForm(request.POST) if form.is_valid(): form.save() # Book.objects.create(clean_data) return redirect("/") else: return render(reqeust, {"form": form}) 编辑书籍: def edit(request, id): edit_obj = Book.objects.get(pk=id) if GET请求: form = BookModelForm(instance=edit_obj) return render(reqeust, {"form": form}) ''' 渲染页面同添加页面 ''' else POST请求: form = BookModelForm(request.POST, instance=edit_obj) if form.is_valid(): form.save() # edit_obj.update(clean_data) return redirect("/") else: return render(reqeust, {"form": form})

 

转载于:https://www.cnblogs.com/Mr-wangxd/p/9919713.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值