Django学习路19_is_delete属性,重写类方法,显性隐性属性
如果在 创建数据表时,使用了
objects = models.Model()
使隐形属性变为了 显性属性
则 必须要自己定义一个
继承了 models.Model 类的类,实现 管理功能 如果一个属性一直都需要使用
比如 is_delete 属性,判断 这条数据是否删除
is_delete 为 True 也就是 1 时,则表示删除了
删除了就不应该在数据库表中再次使用了
models.py 中新添加的数据表,及其继承类 class AnimalManage(models.Manager):
# 父类先声明,继承的是 models.Manager 类,需要重写 filter 方法
'''使用继承,重写原来类的方法,进行改进函数时,考虑类的继承'''
def get_queryset(self):
'''使 filter 自动具有保留 is_delete 为 0 的功能,is_delete 为 1 的自动过滤掉'''
# return super(AnimalManage,self).get_queryset()
# 对父类的方法进行修改,将 is_delete 为 0 的留下
return super(AnimalManage,self).get_queryset().filter(is_delete = False) def create(self,a_name = "Pandas"):
# 默认创建一个熊猫
'''改写创建对象语句,使用子类完成操作'''
animal = self.model()
# 创建一个模型
animal.a_name = a_name
return animal class Animal(models.Model):
# 创建一个数据表为 Animal
a_name = models.CharField(max_length=16)
# 动物名字
is_delete = models.BooleanField(default=False)
# 设置是否删除数据,默认不删除,数据库中表示为 0 objects = AnimalManage()
# 设置管理者,objects 是什么名字
# 类名.定义的名字.all()
添加到数据库表中的数据 其中 is_delete 为 1 的表示已经删除的数据 is_delete 是需要的数据

在 urls.py 中添加参数 url(r'getanimals',views.getanimals) 在 views.py 中添加 views. 后面的函数名 def getanimals(request):
animals = Animal.objects.all()
# 这里使用的是子类的实例化对象 objects
context = {
'animals':animals
}
'''
animal = Animal.objects.create('动物名称')
使用 子类中定义的方法进行创建
''' return render(request,'Animals.html',context=context)
在 templates 中创建 render 函数中的 'xxx.html' 文件
此处 我的是 Animals.html <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>动物</title>
</head>
<body>
<h2>动物列表</h2>
<ul>
{% for animal in animals %}
<li>{{ animal.a_name }}</li>
{% endfor %}
</ul>
</body>
</html>


is_delete 为 1 的过滤掉了, 为 0 的保存了下来
2020-05-13
Django学习路19_is_delete属性,重写类方法,显性隐性属性的更多相关文章
- Django学习路21_views函数中定义字典及html中使用类实例对象的属性及方法
创建 app6 在项目的 settings 中进行注册 INSTALLED_APPS 里面添加 'app6.apps.App6Config' 在 app6 的models.py 中创建数据表 clas ...
- Django学习路37_request属性
打印元信息,基本上都会打印出来 类字典结构的 key 键 允许重复 get 请求可以传参,但是长度有限制 最大不能超过 2K post 文件上传使用 get 参数 默认放在网址中 post 在 ...
- Django学习路11_向数据库中添加 和 获取指定条件数据
在 views.py 中添加函数 向数据库中添加数据 def add_persons(request): for i in range(15): person = Person() flag = ra ...
- Django学习路34_models 文件创建数据表
from django.db import models # Create your models here. class BookInfoManager(models.Manager): '''图书 ...
- Django学习路32_创建管理员及内容补充+前面内容复习
创建管理员 python manage.py createsuperuser 数据库属性命名限制 1.不能是python的保留关键字 2.不允许使用连续的下划线,这是由django的查询方式决定的 ...
- Django学习路18_F对象和Q对象
F 对象: 可以使用模型的 A 属性和 B 属性进行比较 写法: 需要的数据对象 = 数据表(类名).objects.filter(列名__条件=F('列名2')) 需求: 查看男生数量比女生少 的公 ...
- Django学习路4_数据库添加元素,读取及显示到网页上
在 views 中实现对数据库的添加和读取数据库 添加数据 对象 = models 中创建的类名() 对象.列名 = '字段值' 对象.save() 进行保存 return HttpResponse( ...
- Django学习路35_视图使用方法(复制的代码) + 简单总结
from django.shortcuts import render,redirect from django.http import HttpResponse,JsonResponse from ...
- Django学习路33_url 地址及删除元素 delete() 和重定向 return redirect('路径')
保存日期 def create(request): '''新增一本图书''' # 1.创建BookInfo对象 b = BookInfo() b.btitle = '流星蝴蝶剑' b.bpub_d ...
随机推荐
- 整合Lettuce Redis
SpringBoot 是为了简化 Spring 应用的创建.运行.调试.部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖 ...
- C#由转换二进制所引起的思考,了解下?
前言 最近遇到很有意思转换二进制的问题,有部分童鞋俨然已了解,可能也有一部分童鞋没碰到过也就不知情,这里我们来深入学习下转换二进制所带来的问题. 二进制转换问题 假设现在我们有一个int类型的数据,它 ...
- scala数据结构(一)
一.概述 1,特点 )Scala同时支持不可变集合和可变集合 )两个主要的包: 不可变集合:scala.collection.immutable 可变集合: scala.collection.muta ...
- Java 从入门到进阶之路(二十九)
在之前的文章我们已经可以对本地对文件和目录进行新建和删除等操作,接下来我们来对文件内对具体内容进行操作. 如下代码,我们实现了一个基本的文件写入: /** * java.io.RandomAccess ...
- redis-cli
redis-cli --stat //监控key的数量,内存占用 redis-cli --scan //列出所有的key redis-cli --bigkeys //列出占用内存较大的key redi ...
- 洛谷 P2882 [USACO07MAR]Face The Right Way G
题目传送门 题目描述 Farmer John has arranged his N (1 ≤ N ≤ 5,000) cows in a row and many of them are facing ...
- Docker镜像-列出镜像
列出镜像 镜像体积 虚悬镜像 中间层镜像 列出部分镜像 要想列出已经下载下来的镜像,可以使用docker images 或者 docker image ls 命令. $ docker image ls ...
- C++求树子节点权重最大的和
#include <iostream> #include <vector> using namespace std; int n; const int MaxN = 1e5; ...
- 十年老苹果(A1286)强升Catalina及Win10踩坑记
前言 手头有一台十年老苹果,MacBook Pro,A1286,连视网膜屏都没有,电池也早就衰减以后直接拆掉了(减重). 早些年用得还挺多,后来家里也弄了台式,用得逐渐少了,再后来时不时Windows ...
- shell专题(七):流程控制(重点)
7.1 if 判断 1.基本语法 if [ 条件判断式 ];then 程序 fi 或者 if [ 条件判断式 ] then 程序 fi 注意事项: (1)[ 条件判断式 ],中括号和条件判断式之间必须 ...