阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

增加数据到数据库

122次阅读
没有评论

共计 1680 个字符,预计需要花费 5 分钟才能阅读完成。

一、创建对象

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

二、增加方式

  • 对象创建空对象后赋值

    u = User() # 实例化 User 模型类 u.username = 'lucky' # 添加用户名 u.password = 123456 # 添加密码 u.sex = True # 添加性别 u.age = 18 # 添加年龄 u.info = 'lucky 是一个帅气的 boy' # 添加个人简介 u.save() # 进行保存

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

  • 传参创建对象

    u = User(username="lucky", age=17, sex=True, info="lucky is a good man") u.save()

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

  • 管理器类中定义创建方法

    class MyAppManager(models.Manager): def get_queryset(self): return super().get_queryset().filter(isDelete=False) def create(self, name, age, sex, info): obj = self.model() # User() obj.name = name obj.age = age obj.sex = sex obj.info = info return obj class User(models.Model): # 自定义管理器对象, objects = MyAppManager() username = models.CharField(max_length=20) password = models.CharField(max_length=64) sex = models.BooleanField(default=True) age = models.IntegerField(default=20) info = models.CharField(max_length=100,default='info') icon = models.CharField(max_length=60,default='default.jpg') isDelete = models.BooleanField(default=False) createTime = models.DateTimeField(auto_now_add=True) class Meta: db_table = "users"
    u = User.objects.create("lucky", 16, False, "lucky is a good Boy") u.save()
  • 在模型类中定义一个类方法用于创建对象

    class User(models.Model): username = models.CharField(max_length=20) password = models.CharField(max_length=64) sex = models.BooleanField(default=True) age = models.IntegerField(default=20) info = models.CharField(max_length=100,default='info') icon = models.CharField(max_length=60,default='default.jpg') isDelete = models.BooleanField(default=False) createTime = models.DateTimeField(auto_now_add=True) class Meta: db_table = "users" @classmethod def create(self, name, age, sex, info): return cls(name=name, age=age, sex=sex, info=info)
    u = User.create("lucky", 18, False, "lucky is a bad man") u.save()

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-05-26发表,共计1680字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中