django事务、查询优化、MTV与MVC、多对多关系表新建字段方式

事务的开启

from django.db import transaction
with transaction:
	#在改代码块执行的orm操作必须符合事务特性
	………………

数据查询的优化

values(‘name’) 获得字典
only(‘name’) 只查询‘name’字段
defer(‘name’) 除了’name’字段都查询
查询出来的数据是一个个的对象。only查询出来后,再点这个对象不会再查询数据库了,如果点其他的属性的话会再次查询数据库。

res  = models.Book.objects.only('name','price')

choice字段优化查询

在models.py中

class User(models.Model):
	name = models.Charfield(max_length=32)
	choice = ((1,'男'),(1,'女'),(1,'其他'))
	gender = models.IntegerField(choice=choices)

在views.py视图函数中

user_obj  = models.User.objects.get('name = 'xxx'')
print( user_obj.get_gender_display())

get_gender_display()方法可以获得用choice方法设置的字段属性 男 女 其他

MTV与MVC

MTV(django):
M:models
T;templates
V:views

MVC:
M:models
V:views
C:controller(url+views)

区别:两个框架的本质是一样的,django非得这么称呼MVC和MTV

多对多建立关系的两种方式

class Book(models.Model):
	name = CharField(max_length=32)
	author = models.ManyToManyField(to='Author',through='Book2Author,'through_fields=	('book','author'))

class Author(models.Model);
	name = models.CharField(max_length=32)
	
class Book2Author(models.Model):
	book = models.ForeignKey(to='book')
	author = models.ForeignKey(to='Author')

对比用ManyToMany自动创建关系表,这种方式可以在新建的中间表中建立新的字段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值