插入数据
命令:create 或者 save
create用法:ModelName.objects.create(itemName="itemValue")
save用法:modelName = ModelName()
modelName.itemName = itemValue
modelName.save()
说明:create是objecet管理器(model默认管理器)的方法,save是model对象的方法
例子:
1.给Author表插入一条记录,其中name的值为 测试name(普通单表插入)
方法一:Author.objects.create(name="测试name")
方法二:author = Author()
author.name = "测试name"
author.save()
说明:分别是create和save的演示
2.给AuthorDetail表插入一条记录,记录Author表中id为1的作者细节信息(1对1关系)
# sex = models.BooleanField(max_length=1, choices=((0, '男'), (1, '女'),))
# email = models.EmailField()
# address = models.CharField(max_length=50)
# birthday = models.DateField()
# author = models.OneToOneField(Author)
方法一:AuthorDetail.objects.create(
sex=False,
email="admin@admin.com",
address="中国",
birthday="1988-1-1",
author_id=1)
方法二:Author.objects.create(name="测试name")
author = Author()
author.name = "测试name"
author.save()
AuthorDetail.objects.create(
sex=False,
email="admin@admin.com",
address="中国",
birthday="1988-1-1",
author=author)
说明:对于这种1对1或者1对多的插入,可以有两种方式,第一种就是方法一中,直接用author_id=1这种,另一种是直接传递个对象,像方法二中那样,直接传autho=author框架会自己去找到对应的id存入到数据库中,在这个例子中,是使用先创建author在把这个author保存,然后传递给authorDetail的,在实际中,该author对象也有可能是直接从数据库查出来的,只要是数据库里确实有的author对象就可以
3.插入一条Book信息(多对多)
# title = models.CharField(max_length=100)
# authors = models.ManyToManyField(Author)
# publisher = models.ForeignKey(Publisher)
# publication_date = models.DateField()
步骤1:插入Book表(写入Book中所有非Many-to-Many的字段)
book = Book()
book.title ="python学习"
book.publisher_id ="1"
book.publication_date ="2000-1-1"
book.save()
步骤2:插入Book表和Author表的关联表(处理Many-to-Many字段)
book.authors.add(Author.objects.get(id=1))
修改数据
命令:update 或者 save
例子:讲Author表中id为1的记录的name改为xiaol
save方法:
author = Author.objects.get(id=1)
author.name="xiaol"
author.save()
update方法:
Author.objects.filter(id=1).update(name="xiaol")
删除数据
命令:delete
用法:ModelName.objects.filter(param).delete()
说明:默认下delete是级联删除
例子:删除Author表中id为1的数据
Author.objects.filter(id=1).delete()
官方文档:https://docs.djangoproject.com/en/1.9/ref/models/querysets/