关于form组件的补充-------formChoice
form组件的Choice字段
还是基于出版社和书的模型来详解
models.py(模型)
from django.db import models# Create your models here. class Book(models.Model):title = models.CharField(max_length=32)pub_date = models.DateField()price = models.DecimalField(max_digits=5, decimal_places=2) state=models.IntegerField(choices=((1,'已出版'),(2,'未出版')),default=1) #在数据库存储是以数字存储的,怎么取值?book是类的对象--book.get_state_displaypublish = models.ForeignKey(to="Publish", to_field="id", on_delete=models.CASCADE, null=True)authors = models.ManyToManyField("Author", db_table="book2authors") # 创建关系表def __str__(self):return self.titleclass Publish(models.Model):name = models.CharField(max_length=32)city = models.CharField(max_length=32)email = models.CharField(max_length=32)def __str__(self):return self.nameclass Author(models.Model):name = models.CharField(max_length=32)age = models.IntegerField() gender=models.IntegerField(choices=((1,'男'),(2,'女'),),default=1)#在数据库存储是以数字存储的,怎么取值?book是类的对象--book.get_gender_display
urls.py(路径分发)
urlpatterns = [path('admin/', admin.site.urls),path('books/', views.books, name='books'),path('addbooks/', views.addbooks, name='addbooks'),re_path('delbooks/(\d+)', views.delbooks),re_path('editbooks/(\d+)', views.editbooks) ]
view.py(视图函数)
#为Book这个模型创建forms,为了渲染数据和校验使用,所以这个类的字段必须和模型类有个逻辑上的关系
class BookForm(forms.Form): title=forms.CharField(max_length=32) price= forms.DecimalField(max_digits=5,decimal_places=2) pub_date = forms.DateField() state=forms.ChoiceField(choices=((1,'已出版'),(2,'未出版'))) #选择项,用的最多 publish=forms.ModelChoiceField(models.Publish.objects.all()) #一对多 authors=forms.ModelMultipleChoiceField(models.Author.objects.all()) #多对多
#对于publish和author这两个一对多和多对多的字段也不用考虑那么多直接用formChoice字段,然后把所有的对象取出来赋值到里面就行 #查看书籍def books(request):booklist = models.Book.objects.all()return render(request, 'books.html', {'booklist': booklist}) #添加书籍
def addbooks(request): # 通过form/ModelForm以及校验标签渲染字段以及输入框 if request.method == 'POST': form = Bookform(request.POST) if form.is_valid(): form.save() return redirect('/books/') else: return render(request, 'addbooks.html', {'form': form}) else: # form=BookForm() #form组件形式,根据字段选择不同的字段类型 return render(request, 'addbooks.html', {'form': form}) #编辑书籍
def editbooks(request, editbook_id): editbook=models.Book.objects.filter(pk=editbook_id).first() if request.method == 'POST': form=BookForm(request.POST) if form.is_valid(): form.save() return redirect('/books/') else: return render(request,'editbooks.html',{'form':form}) else: form=BookForm(edit_book) return render(request,'editbooks.html',{'form':form})
转载于:https://www.cnblogs.com/tjp40922/p/10279933.html
关于form组件的补充-------formChoice相关推荐
- Web框架之Django_08 重要组件(form组件、cookie和session组件)
阅读目录 一.form组件 二.cookie与session Django中操作Cookie 摘要: form组件 cookie组件 session组件 一.form组件 form介绍 我们之前在ht ...
- django12:form 组件/渲染标签/数据校验/钩子函数/
基本用法 from django import forms# 自己写一个类 class RegForm(forms.Form):username= forms.CharField(min_length ...
- python---django中form组件(1)简单使用和字段了解
Django中的Form组件功能: 1.对用户请求的验证 2.生成html代码 Form使用:对用户请求进行验证 前端代码: <form action="/f1.html" ...
- Django中Form组件的使用
Form介绍 HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入 ...
- Django之Form组件介绍
--------------------------------------前言------------------------------------ 在进入正题之前,想多说两句; 当我们开始学习一 ...
- django框架之form组件
内容回顾: 1. 内容回顾 1. 复习JSON 1. JSON是什么? 一种数据格式,和语言无关的数据格式. 2. Python里面转换 ...
- Python之路--Django--form组件与model form组件
一.form组件介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验 ...
- Django之Form组件
一.Form组件介绍 1.Form组件可以做的几件事情 1.用户请求数据验证 2.自动生成错误信息 3.打包用户提交的正确信息 4.如果其中有一个错误了,其他的正确这,保留上次输入的内容 5.自动创建 ...
- Form 组件动态绑定数据
1.Form 组件的作用: a.对用户提交的数据进行验证(form表单/ajax) b.保留用户上次输入的信息 c.可以生成html标签(input表单类的标签) 2..由于form组件中每个字段都是 ...
最新文章
- Strusts2 高危漏洞又来了,老项目自查起来!
- 在SAP中进行黏贴时必须要把之前的数据删掉后才能黏贴,不能直接使用黏贴来覆盖之前的数据,这个怎麼解?
- JS template string 神奇术
- 关于Android回调的理解
- 砥志研思SVM(四) 序列最小最优化算法(SMO)论文翻译
- PAT 1003 Sharing (25)
- 讲述一个自学七年Python编程的码农人生
- 关于码云的一些基本知识_一些关于 CPU 的基本知识
- 张小龙向来痴,微信从此醉,复盘8年,2大初心驱动至今 | 2019实录
- 力扣题目系列:746. 使用最小花费爬楼梯 -- 一道动态规划入门题
- openssl ca文档翻译
- python数学实验与建模百度云_Python数学实验与建模
- Proteus —— 电路仿真软件
- 数据库设计案例(1)
- 设置电脑 保护视力 还有桌面默认颜色
- Fully Convolutional Cross-Scale-Flows for Image-based Defect Detection
- 增量Lint检测实现原理
- unity 摄像头跟着鼠标移动_unity第三视角移动,摄像机跟随
- position中absolute和fixed的区别
- 小写数字与大写数字转换
热门文章
- 《算法竞赛入门经典》习题3-1 得分(Score,ACM、ICPC Seoul 2005,UVa1585)
- 【Qt】2D绘图之绘制图片
- 【MFC】创建第一个应用程序
- 【STM32】FreeRTOS中断示例
- 【Linux系统编程】进程间通信--消息队列
- git url地址无效_如何同步多个 git 远程仓库
- python字典进行大写转化_python之字典的增删改查
- group by 将null放到其他_为什么我不建议你用去 “ ! = null quot; 做判空?
- 记录x86调试命令总结
- tomcat 4.0头文件及maven导出问题万能build模板