组团学

增加数据到数据库

阅读 (256502)

一、创建对象

  • 当创建对象时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()
需要 登录 才可以提问哦