django里的小技巧
在一个项目中,如果文件A有一个Foo类,并且实例化了一个这个类的对象,那么在B文件中导入文件A的时候,会执行A文件的代码,并且实例化了Foo类。这时,文件C也导入A文件,同样也会执行A文件的代码,但其实不是的,这个A文件只会导入一次,当文件C再次导入A文件的时候,会先去内存中找,是否已经已经导入,如果导入了,那就不会再次导入,所以这个A文件的实例对象也就只会创建一次,不管几个文件调用,都是共用这一个实例
a = models.CustomerInfo.objects.all().last()
a.get_status_display() # a为一条数据对象(<CustomerInfo: 老王>),显示下拉框字段的值对应的文本,status字段是有choices属性的,
models.CustomerInfo._meta.fields #获取model所有字段对象
b = models.CustomerInfo._meta.get_field('status') # 获取一个字段的对象 b.choices # 返回这个字段的choices,有则返回,没有则返回空列表 b.get_choices()# 获取这个字段的choices,这个字段是外键,则返回外键关联表上的所有数据 # b是表中的一个字段对象,假设是时间字段,获取这个字段的类型,则输出 'DateField' b.get_internal_type() # 获取此字段数据类型
c1是一张表的一个数据对象
c2 = c1._meta.get_field('consult_courses') #找到这条记录的指定的字段对象
c2为那条记录的 consult_course 字段的对象,这个字段是ManytoMany字段,关联Course表
c3 = c2.rel.to # 返回这个字段所关联的那个表对象 <class 'crm.models.Course'>
c3 = c2.related_model 也是一样是效果 <class 'crm.models.Course'>
c3.objects.all() #返回Course表的所有数据
导入模块的快捷键 win+enter