前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >增加数据到数据库

增加数据到数据库

作者头像
星哥玩云
发布2022-09-14 17:27:23
6530
发布2022-09-14 17:27:23
举报
文章被收录于专栏:开源部署

一、创建对象

  • 当创建对象时DJango没有操作数据库读写,当调用save()方法时才与数据库进行交互,将对象保存到数据库
  • __init__()方法已经在models.Model类中进行了重写规定了特殊含义,所以在模型类中不能重写

二、增加方式

对象创建空对象后赋值

代码语言:javascript
复制
u = User()  <span class="hljs-comment"># 实例化User模型类</span>
u.username = <span class="hljs-string">'lucky'</span> <span class="hljs-comment"># 添加用户名</span>
u.password = <span class="hljs-number">123456</span>  <span class="hljs-comment"># 添加密码</span>
u.sex = <span class="hljs-keyword">True</span> <span class="hljs-comment"># 添加性别</span>
u.age = <span class="hljs-number">18</span> <span class="hljs-comment"># 添加年龄</span>
u.info = <span class="hljs-string">'lucky是一个帅气的boy'</span> <span class="hljs-comment"># 添加个人简介</span>
u.save() <span class="hljs-comment"># 进行保存</span>

问题:代码冗余,不利于复用

传参创建对象

代码语言:javascript
复制
u = User(username=<span class="hljs-string">"lucky"</span>, age=<span class="hljs-number">17</span>, sex=<span class="hljs-keyword">True</span>, info=<span class="hljs-string">"lucky is a good man"</span>)
u.save()

问题:关键字参数冗余,并且不提示有哪些属性

管理器类中定义创建方法

代码语言:javascript
复制
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MyAppManager</span><span class="hljs-params">(models.Manager)</span>:</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">get_queryset</span><span class="hljs-params">(self)</span>:</span>
        <span class="hljs-keyword">return</span> super().get_queryset().filter(isDelete=<span class="hljs-keyword">False</span>)
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">create</span><span class="hljs-params">(self, name, age, sex, info)</span>:</span>
        obj = self.model() <span class="hljs-comment"># User()</span>
        obj.name = name
        obj.age = age 
        obj.sex = sex
        obj.info = info
        <span class="hljs-keyword">return</span> obj 
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span><span class="hljs-params">(models.Model)</span>:</span>
    <span class="hljs-comment">#自定义管理器对象,</span>
    objects = MyAppManager()
		username = models.CharField(max_length=<span class="hljs-number">20</span>)
    password = models.CharField(max_length=<span class="hljs-number">64</span>)
    sex = models.BooleanField(default=<span class="hljs-keyword">True</span>)
    age = models.IntegerField(default=<span class="hljs-number">20</span>)
    info = models.CharField(max_length=<span class="hljs-number">100</span>,default=<span class="hljs-string">'info'</span>)
    icon = models.CharField(max_length=<span class="hljs-number">60</span>,default=<span class="hljs-string">'default.jpg'</span>)
    isDelete = models.BooleanField(default=<span class="hljs-keyword">False</span>)
    createTime = models.DateTimeField(auto_now_add=<span class="hljs-keyword">True</span>) 
    <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Meta</span>:</span>
        db_table = <span class="hljs-string">"users"</span>
代码语言:javascript
复制
u = User.objects.create(<span class="hljs-string">"lucky"</span>, <span class="hljs-number">16</span>, <span class="hljs-keyword">False</span>, <span class="hljs-string">"lucky is a good Boy"</span>)
u.save()

在模型类中定义一个类方法用于创建对象

代码语言:javascript
复制
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span><span class="hljs-params">(models.Model)</span>:</span>
		username = models.CharField(max_length=<span class="hljs-number">20</span>)
    password = models.CharField(max_length=<span class="hljs-number">64</span>)
    sex = models.BooleanField(default=<span class="hljs-keyword">True</span>)
    age = models.IntegerField(default=<span class="hljs-number">20</span>)
    info = models.CharField(max_length=<span class="hljs-number">100</span>,default=<span class="hljs-string">'info'</span>)
    icon = models.CharField(max_length=<span class="hljs-number">60</span>,default=<span class="hljs-string">'default.jpg'</span>)
    isDelete = models.BooleanField(default=<span class="hljs-keyword">False</span>)
    createTime = models.DateTimeField(auto_now_add=<span class="hljs-keyword">True</span>) 
    <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Meta</span>:</span>
        db_table = <span class="hljs-string">"users"</span>
<span class="hljs-meta">    @classmethod</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">create</span><span class="hljs-params">(self, name, age, sex, info)</span>:</span>
        <span class="hljs-keyword">return</span> cls(name=name, age=age, sex=sex, info=info)
代码语言:javascript
复制
u = User.create(<span class="hljs-string">"lucky"</span>, <span class="hljs-number">18</span>, <span class="hljs-keyword">False</span>, <span class="hljs-string">"lucky is a bad man"</span>)
u.save()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、创建对象
  • 二、增加方式
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档