ORM: object relationship mapping

ORM: object relationship mapping

关于数据库的两条命令:
		python manage.py makemigrations
		python manage.py migrate
		数据库第一次配置必须完成数据库的迁移,执行上边的两条命令就好
		
表单的记录操作:
	1、添加
		obj = models.表名(**kwargs)
		obj.save()
		
		models.表名.objects.create(**kwargs)
		
	2、修改
		#方式一:
		obj = models.表名.objects.filter(name="python")[0]
		obj.name = "JAVA"
		obj.save
		
		#方式二   update
		models.表名.objects.filter(name="python").update(**kwargs)
		
	3、删除:
		models.表名.objects.filter(name="python").delete()
		
	4、查询:
		QuerySet集合对象:
			models.表名.objects.all()
			models.表名.objects.filter(**kwargs)
			models.表名.objects.all().values(*args)
			models.表名.objects.all().values_list(*args)
			models.表名.objects.exclude(**kwargs)
			models.表名.objects.order_by(*args)
			models.表名.objects.distinct(*args)
	 
		model对象:
			models.表名.objects.get(**kwargs)
			models.表名.objects.filter(**kwargs).first()
			models.表名.objects.filter(**kwargs).last()
			models.表名.objects.filter(**kwargs).count()
			models.表名.objects.filter(**kwargs).exist()


关联表记录操作:
	表关系:
		1、一对一
		2、一对多
		3、多对一
	添加记录:
		一对多:
			创建一对多:
			publish = models.Foreignkey("Publish",related_name="bookList")
			#添加记录方式1:
			models.Book.objects.create(publish_id=1)
			#添加的记录方式2:
			pubObj = models.Publish.objects.filter(name = "人民出版社")[0]
			models.Book.objects.create(publish=pubObj)
		
		多对多:
		创建多对多关系:
		authorlist = models.ManyToManyField("Author",related_name="bookList")
		多对多添加记录:
		book_obj = models.Book.objects.create(title="追风的人",price=100,publishDate="2017-12-12",publish_id=2)
		alex_obj = models.Author.objects.filter(name="alex")[0]
		egon_obj = models.Author.objects.filter(name="egon")[0]
		
	查询记录:
		正向查询:
			一对多:
			linux_obj = models.Book.objects.filter(title="linux").first()
			print(linux_obj.publish.name)  #与这本书对象关联的出版社的对象的名字
			
			多对多:
			linux_obj = models.Book.objects.filter(title="linux").first()
			print(linux_obj.authorlist.all())  #与这本书关联的所有的作者的对象集合
		反向查询:
			一对多:
			eg:查找人民出版社出版过的书籍的名字
			publist_obj = models.Publish.objects.filter(name="人民出版社")[0]
			print(publist_obj.bookList.all())   #出版社书籍对象集合
			
			多对多:
			eg:查找yuan出版过的素有书籍的名字和价格
			author_yuan = models.Author.objects.get(name="yuan")
			print(author_yuan.bookList.all())
			与该作者关联的所有书籍的对象的集合
			

  

posted @ 2017-10-27 20:01 前方、有光 阅读(...) 评论(...) 编辑 收藏