1. 程式人生 > >ORM: object relationship mapping

ORM: object relationship mapping

distinct tinc 關聯 記錄操作 log book pytho exist filter

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())
			與該作者關聯的所有書籍的對象的集合
			

  

ORM: object relationship mapping