Django09:图书管理系统笔记/choices用法/ MTV与MVC模型/多对多三种创建方式

 

图书管理系统笔记

redirect括号内可以直接写url

也可以直接写别名

但如果别名需要参数,必须使用reverse解析。

 

choices用法

使用场景:能列举完全的数据

#使用方法:xxx_choice
#1. get.xxx_display
#2. 如果超出范围,则显示原来的数据,如3,4
#3. 字段类型保证和列举类型一致

#类似枚举
class UserInfo(model.Model):name = models.CharField()addr_choice = ((1, "北京"),(2, "上海"),)addr = models.IntegerField(choice=addr_choice)#调用
print(obj.get_addr_display())#字符型,应该使用CharField()score_choice = (('A', '优秀'),('B', '良好'),)

 

MTV与MVC模型

#MTV: django号称是MVC模型

M: models

T: templates

V: views

#MVC: 其实django本质也是MVC

M: models

V: views

C: controller

 

多对多三种创建方式

全自动:利用ORM创建第三张关系表

优点:代码不需要写,支持orm操作第三张表

缺点:扩展性不足

class Book(models.Model):name = models.CharField(max_length=32)authors = models.ManyToManyField(to='Author')

纯手动

优点:扩展性高

缺点: 手写代码,不能使用orm提供的操作方法

class Book(models.Model):name = models.CharField(max_length=32)class Author(models.Model):name = models.CharField(max_length=32)class Book2Author(models.Model):book = models.ForeignKey(to='Book')author = models.ForeignKey(to='Author')info = models.CharField(max_length=32)

半自动

优点:扩展性高,orm有提供操作

缺点:代码多。没法使用add.set.remove.clear 四个方法

class Book(models.Model):name = models.CharField(max_length=32)# through_fields顺序,当前表是谁就谁在前面# through_fields以防第三张表有其他字段authors = models.ManyToManyField(to='Author',through='Book2Author',through_fields=('book','author')) class Author(models.Model):name = models.CharField(max_length=32)class Book2Author(models.Model):book = models.ForeignKey(to='Book')author = models.ForeignKey(to='Author')info = models.CharField(max_length=32)

 

总结:为了拓展性高,一般使用半自动

。。。。写代码为自己留后路

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

业务处理速度变慢?且看IT如何成为救世主

在日常生活的方方面面,我们似乎都在期待着一种即时的便利。比如,用手机购物、订餐、缴费、预约挂号等等。而在企业中,时间与效率可不是一种休闲福利,而是一项重要的商业功能。我们有理由期待,当今史无前例的数字革命正…

微软让卡塔尔世界杯踏入元宇宙

遵守前一篇公众号文章里的承诺,昨天盆盆在视频号里录制了一段5分钟左右的短视频,讲了江森自控和微软Azure,如何帮助卡塔尔世界杯打造基于元宇宙的数字体育馆。Part.1欢迎扫码关注我的视频号(每天更新元宇宙、云计算和数字化的短视频)。Part.2…

洛谷——P1305 新二叉树(新建二叉树以及遍历)

题目描述输入一串二叉树,用遍历前序打出。 输入输出格式输入格式: 第一行为二叉树的节点数n。(n \leq 26n≤26) 后面n行,每一个字母为节点,后两个字母分别为其左右儿子。 空节点用*表示 输出格式: 前序排列的二叉树 输…

插槽1单通道插槽2双通道_相机双存储卡插槽有什么大不了的?

插槽1单通道插槽2双通道If you paid any attention to the launch of Canon and Nikon’s first full frame mirrorless cameras—the EOS R, Z6, and Z7— you’d have noticed that some people were pretty unhappy that they only came with a single card slot—an SD slo…

python 垃圾回收详解

原文:https://zhuanlan.zhihu.com/p/31150408 总纲策略和垃圾回收系统工作内容引用计数详解标记-清除分代收集循环引用编程应用-常见方法ex 过程详解使用建议触发机制参考文献Python垃圾回收机制--完美讲解(Python vs Ruby)Python垃圾回收机制…

Django10:Ajax介绍/发送数据/SweetAlert

Ajax 异步提交 局部刷新 发送方式 1. 浏览器输入url,按enter get 2.a标签href属性 get 3.form表单 get/post 4. ajax get/post ajax 不是编程语言&#xf…

物联网数据终端演进之道

智能手机的普及在最近几年掀起了一股取代企业数据终端的风潮,但正如笔者在一年前便提到过 的,“智能手机难以在企业级应用中得以普及”,这种观点最好的佐证便是时至今日,由于安全性与管理合规的需要,个人计算机用于企业…

mac 不能连接wi-fi_如何阻止Mac自动连接到Wi-Fi网络

mac 不能连接wi-fiYour Mac automatically reconnects to Wi-Fi networks you’ve previously connected to. Starting with macOS High Sierra, you can now tell your Mac not to automatically connect to certain Wi-FI networks. Your Mac will remember the Wi-Fi networ…

“玩转课堂”基本构想

1、项目背景随着互联网科技的高速发展,人们的生活、学习和工作中的许多事情都可以借助互联网来完成,并且反响良好。作为学生,我们切身体会到,能够使用网络平台来进行学习可以节约时间、并且十分方便;而在老师的角度&am…

SQLServer之分离数据库

分离数据库注意事项 要求具有 db_owner 固定数据库角色中的成员资格。 可以分离数据库的数据和事务日志文件,然后将它们重新附加到同一或其他 SQL Server实例。 如果要将数据库更改到同一计算机的不同 SQL Server 实例或要移动数据库,分离和附加数据库会…

django11:自动序列化/批量插入数据/分页器

自动序列化 借助serializers帮你自动完成序列化 from app01 import models from django.core import serializers def ab_se(request):user_queryset models.Userinfo.objects.all()#原始方法user_list []for user_obj in user_queryset:user_list.append({username:user_o…

罗汉塔最少步骤_如何以最少的步骤压缩和密码保护文件?

罗汉塔最少步骤If you have a large batch of files to compress and you want to add password protection to each of them, what is the simplest or quickest way to do so? Today’s SuperUser Q&A post has the answer to a curious reader’s question. 如果要压缩…

IoTSharp中使用X509加密MQTT通讯并实现设备鉴权

IoTSharp支持MQTT协议通过 TLS 1.2 加密通讯, 并可以通过X509证书进行设备认证登录。基本配置在 appsettings.Production.json中需要 指定域名, 并设置EnableTls为true"MqttBroker":{"DomainName":"http://demo.iotsharp.net:2…

IBM希望其“裁剪”过的Swift能够引诱你使用BlueMix云

现在所有人都可以使用了——微软顶尖的工程师表示,“呼吸新鲜的空气吧!” 据Stack Overflow的估计,Swift在最受欢迎的编程语言中排名第二,该语言已经出现在了IBM的BlueMix云平台之上,供所有人使用。 她从今年二月份开始…

物理层、数据链路层、介质访问控制子层

物理层 物理层定义了比特作为信号在信道上发送时相关的电气、时序和其它接口,物理层是构建网络的基础。数据通信理论基础:改变诸如电压或者电流等某种物理特性的方法可用来在电线上传输信息,如果用一个以时间t为自变量的单值函数 f(t) 来表示…

如何批量删除指定的GitHub Repos

正常情况下,如果需要删除GitHub上不需要的repos,手动删除的操作有点繁琐。如果只要删除一个还能接受,手动删除多个repos就有点浪费时间了。其实我们可以通过GitHub的API接口来批量删除不需要的repos。 将要删除的repos按照username\repos-nam…

django12:form 组件/渲染标签/数据校验/钩子函数/

基本用法 from django import forms# 自己写一个类 class RegForm(forms.Form):username forms.CharField(min_length3,max_length8, label"用户名")password forms.CharField(min_length3,max_length8,label"密码")emailforms.EmailField() 1.校验数据为…

如何快速拥有一个 Web IDE

本文将介绍如何使用 2-3 句指令在几分钟内创建一个 Web IDE 环境。服务器准备如何准备服务器可以参考上文 一键体验 Istio,这里只需要一台即可,示例中的服务器 IP 为:43.154.189.116安装 Web IDE下载安装工具在服务器上,执行以下指…

有了防火墙、IPS、WAF 还需要数据库审计?

本文讲的是 有了防火墙、IPS、WAF 还需要数据库审计?,“我们的网络安全系统中已经有了Web应用防火墙、网络防火墙和IPS,难道还需要数据库审计吗?”很多人有这样的疑问,网络中有层层防护,还不能保护数据库的…

20155339 Exp4 恶意代码分析

20155339 Exp4 恶意代码分析 实验后回答问题 (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。 监控网络连接。当某个…