电脑的笔记有两个好处:一、可搜索,二、扩展方便。
入职一个月了,也该整理整理了,给自己,也给大家分享一下哈(再次鄙视国内的IT技术文档/问答环境,抄抄抄,Cao你妹啊,你们TM自己写点不行啊!!!!)。当然我刚学Django/Python,也欢迎指点错误的地方。
Django是属于MVC的Web框架。
Model:负责与数据库打交道
View:负责获取或者增强从Models得到的数据
Controller:这是Django本身
Project:提供各种配置文件
App:功能的结合,包括Model和view,需要在根目录下添加”__init__.py”,使得Python可以识别
ForeignKey例子:
员工打卡上班的记录——员工可有多次打卡记录,但是一次刷卡记录只能有单一员工属性(一对多)
ManyToMany例子:
一篇文章可以有多个标签,而一个标签对应的文章也可以是多篇的(多对多)
ManyToMany还有一种特殊的结构,非常类似Twitter的Follow。
假设 A Follow了 B,但是B并没有Follow A,他们之间的Follow是不对等的,要实现这种关系,要在Meta里面设置symetric=False
这是我理解后觉得“性感到死”的一些代码:
lambda x, y: x+y
map(lambda x: x+1, [1,2,3]) #得到[2,3,4]
reduce(lambda x, y: x+y, [1,2,3]) #得到6
[i for i in xrange(0,100) if i%2==0]
Q(**{key:value})
Q("abc=1")
是不能接受的。但是这段代码性感之处就是彻底摆脱了这条束缚(其实就是重写了keyword对),可以随意构造你喜欢的查询段,这在构造搜索功能时十分有用。比如:q_dict = reduce(lambda x,y: x&y, [ Q(**{"%s__slug_name" % taxonomy:request.GET.get(taxonomy)} ) for taxonomy in request.GET.keys() if taxonomy in SEARCHABLE_LIST ])
@property
@property
的话,这个函数就自动地变成class的属性了,这和js的set、get很像def get_query_set(self):query_set = super(ComputerManager, self).get_query_set()query_set = query_set.annotate(price=Sum('devices__price'))
这样,每台电脑就有了总价格。这在构造商品集的时候很方便,但是admin.py的编写就略显罗嗦了。
联系客服