Django入门-5:模型的基本使用3-模型成员&创建对象
来源:互联网 发布:ubuntu下的下载工具 编辑:程序博客网 时间:2024/05/21 14:55
类的属性objects:是Manager类型的对象,用于与数据库进行交互
当定义模型类时没有指定管理器,则Django会为模型类提供一个名为objects的管理器
支持明确指定模型类的管理器
objects:是Manager类型的对象,用于与数据库进行交互
当定义模型类时没有指定管理器,则Django会为模型类提供一个名为objects的管理器
支持明确指定模型类的管理器
class BookInfo(models.Model):
...
books = models.Manager()
- 当为模型类指定管理器后,django不再为模型类生成名为objects的默认管理器
管理器Manager管理器是Django的模型进行数据库的查询操作的接口,Django应用的每个模型都拥有至少一个管理器
自定义管理器类主要用于两种情况
情况一:向管理器类中添加额外的方法:见下面“创建对象”中的方式二
情况二:修改管理器返回的原始查询集:重写get_queryset()方法
管理器是Django的模型进行数据库的查询操作的接口,Django应用的每个模型都拥有至少一个管理器
自定义管理器类主要用于两种情况
情况一:向管理器类中添加额外的方法:见下面“创建对象”中的方式二
情况二:修改管理器返回的原始查询集:重写get_queryset()方法
class BookInfoManager(models.Manager):
def get_queryset(self):
return super(BookInfoManager, self).get_queryset().filter(isDelete=False)
class BookInfo(models.Model):
...
books = BookInfoManager()
创建对象
当创建对象时,django不会对数据库进行读写操作
调用save()方法才与数据库交互,将对象保存到数据库中
使用关键字参数构造模型对象很麻烦,推荐使用下面的两种之式
说明: _init _方法已经在基类models.Model中使用,在自定义模型中无法使用,
- 方式一:在模型类中增加一个类方法
class BookInfo(models.Model):
...
@classmethod
def create(cls, title, pub_date):
book = cls(btitle=title, bpub_date=pub_date)
book.bread=0
book.bcommet=0
book.isDelete = False
return book
引入时间包:from datetime import *
调用:book=BookInfo.create("hello",datetime(1980,10,11));
保存:book.save()
- 方式二:在自定义管理器中添加一个方法
- 在管理器的方法中,可以通过self.model来得到它所属的模型类
class BookInfoManager(models.Manager):
def create_book(self, title, pub_date):
book = self.model()
book.btitle = title
book.bpub_date = pub_date
book.bread=0
book.bcommet=0
book.isDelete = False
return book
class BookInfo(models.Model):
...
books = BookInfoManager()
调用:book=BookInfo.books.create_book("abc",datetime(1980,1,1))
保存:book.save()
- 在方式二中,可以调用self.create()创建并保存对象,不需要再手动save()
class BookInfoManager(models.Manager):
def create_book(self, title, pub_date):
book = self.create(btitle = title,bpub_date = pub_date,bread=0,bcommet=0,isDelete = False)
return book
class BookInfo(models.Model):
...
books = BookInfoManager()
调用:book=Book.books.create_book("abc",datetime(1980,1,1))
查看:book.pk
实例的属性DoesNotExist:在进行单个查询时,模型的对象不存在时会引发此异常,结合try/except使用
DoesNotExist:在进行单个查询时,模型的对象不存在时会引发此异常,结合try/except使用
实例的方法str (self):重写object方法,此方法在将对象转换成字符串时会被调用
save():将模型对象保存到数据表中
delete():将模型对象从数据表中删除
str (self):重写object方法,此方法在将对象转换成字符串时会被调用
save():将模型对象保存到数据表中
delete():将模型对象从数据表中删除
阅读全文
0 0
- Django入门-5:模型的基本使用3-模型成员&创建对象
- Django入门-5:模型的基本使用1-模型定义
- Django入门-5:模型的基本使用4-模型查询
- Django入门-5:模型的基本使用2-字段
- Django入门-5:模型的基本使用5-QuerySet API讲解
- Django模型的使用
- django模型的基本命令
- 使用信号监控 Django 模型对象字段值的变化
- Crushe Django 入门笔记4 使用模型
- python django框架的模型的创建
- 创建 Django 博客的数据库模型
- django基础入门(3)-设计模型
- [Django数据库模型]创建一个简易的Django APP
- Django学习计划--模型使用
- fragment的基本使用模型
- Django 中数据库模型的使用
- django 购物系统 - 创建模型
- Django项目-数据库,模型创建
- zabbix 安装及部署
- 数据库连接池
- innerHTML与createTexNode的区别
- Linux中多进程(多线程)编程
- class Manipulating DataFrames with pandas
- Django入门-5:模型的基本使用3-模型成员&创建对象
- hibernate映射文件
- 学习笔记3 长得帅的人才能看
- 鸡蛋栈
- 第一天
- Java面试常被问到的题目+解答
- .htaccess rewrite 规则详细说明
- tomcat如何配置环境变量
- ActiveMQ消息队列的使用及应用