django中models阅读笔记
2016-04-25 22:04
441 查看
一、使用数据库需要设置settings.py文件。
AssertionError:Negativeindexingisnotsupported.9、QuerySet有update()方法Publisher.objects.all().update(country='USA')10、删除,使用对象的delete()方法,>>>p=Publisher.objects.get(name="O'Reilly")>>>p.delete()>>>Publisher.objects.all()[<Publisher:ApressPublishing>]QuerySet也可以使用delete方法
DATABASES={ 'default':{ 'ENGINE':'django.db.backends.',#Add'postgresql_psycopg2','mysql','sqlite3'or'oracle'. 'NAME':'',#Orpathtodatabasefileifusingsqlite3. 'USER':'',#Notusedwithsqlite3. 'PASSWORD':'',#Notusedwithsqlite3. 'HOST':'',#Settoemptystringforlocalhost.Notusedwithsqlite3. 'PORT':'',#Settoemptystringfordefault.Notusedwithsqlite3. } }
'ENGINE‘说明使用的是什么数据引擎,django中仅支持'postgresql_psycopg2','mysql','sqlite3'or'oracle'.这几种。
'NAME’使用哪个数据库,在django中,框架可以生成数据表,但是不可以声称数据库,所以要自己手动创建好数据库。
'USER'数据库的用户名
2、如果django框架支持的操作满足不了开发需求,可以执行原生的SQL语句。
>>>fromdjango.dbimportconnection >>>cursor=connection.cursor()3、常用的几条命令:pythonmanage.pyvalidate#检查models是否有语法错误pythonmanage.pystartprojectprojectnamepythonmanage.pystartappappnamepythonmanage.pysyncdb#将新建的表创建到数据库中,但是如果后期对表作了修改,在使用这条命令不会更新。此时应该使用下面两条命令,仅在django版本》=1.7时使用pythonmanage.pymakemigrationspythonmanage.pymigrate4、创建models
fromdjango.dbimportmodels fromdjango.template.defaultfiltersimportdefault classUser(models.Model): name=models.CharField(max_length=50); createTime=models.DateTimeField(auto_now=True); updateTime=models.DateTimeField(auto_now_add=True);5、当使用data=User.objects.all()方法时获得的是数据表记录对象的集合,我们可以使用一些有用的字符串来表示这些对象。可以添加一个类方法__unicode__()该方法返回一个代表该对象的字符串,是我们能够看到他就知道是那一条记录。注意:该方法返回一个unicode对象,如果不是,比如数字,则返回一个TypeError
def__unicode__(self): returnself.name6、使用User.objects.all()方法返回的数据是QuerySet对象,这个集合是由数据表中的记录组成的集合。7、将结果进行排序使用方法是order_by('name'),可以传递一个或多个参数。也可以按照逆序排列,只需要在列名前加一个减号-,例如order_by('-name')。如果想要将查询结果默认赋予按照某一列排序,有如下方法:在models文件的类中添加
classMeta: ordering=['name']8、数据结果可以使用切片操作,但不可以使用负数。Publisher.objects.order_by('name')[0:2]Publisher.objects.order_by('name')[-1]Traceback(mostrecentcalllast):...
AssertionError:Negativeindexingisnotsupported.9、QuerySet有update()方法Publisher.objects.all().update(country='USA')10、删除,使用对象的delete()方法,>>>p=Publisher.objects.get(name="O'Reilly")>>>p.delete()>>>Publisher.objects.all()[<Publisher:ApressPublishing>]QuerySet也可以使用delete方法
>>>Publisher.objects.filter(country='USA').delete() >>>Publisher.objects.all().delete() >>>Publisher.objects.all() []11、获取QuerySet数据对象的某一列数据使用'.'运算符例如:对于数据表studentinfo:
classStudentInfo(models.Model): name=models.CharField(max_length=50,default=""); studentID=models.CharField(max_length=12,default=""); sex=models.CharField(max_length=5,default=""); age=models.IntegerField(default=0); address=models.TextField(default="");想要获取name的值,
objs=StudentInfo.objects.get(studentID=id)#获取QuerySet对象 objs.name#获取name值12自动添加当前时间到数据库时间域的三个类型DateTimeField和DateField和TimeField存储的内容分别对应着datetime(),date(),time()三个对象。其中有两个属性比较重要auto_now=False和auto_now_add=False,默认情况下都是false。auto_now=Ture,字段保存时会自动保存当前时间,但要注意每次对其实例执行save()的时候都会将当前时间保存,也就是不能再手动给它存非当前时间的值。auto_now_add=True,字段在实例第一次保存的时候会保存当前时间,不管你在这里是否对其赋值。但是之后的save()是可以手动赋值的。也就是新实例化一个model,想手动存其他时间,就需要对该实例save()之后赋值然后再save()。13字段中设置非必填项有两个参数可以设置,是blank和null1)如果是字符串类型的字段,仅设置blank=True即可,当像数据库中插入数据时,如果没有提供值,django会自动添加空串到对应字段中。但是对于其他数据类型比如日期、数字等字段则这样设置会出现错误。2)如果是数字、日期等非字符串类型的字段,想让他是非必填项,可以设置blank=True,null=True.此时相当于在sql语句中去除了NOTNULL属性。14all():返回包含模式里所有数据库记录的QuerySetfilter():返回包含符合指定条件的模型记录的QuerySetexclude():和filter相反,查找不符合条件的querySetget():获取单个符合条件的记录,没有找到或者超过一个结果都会抛出异常。如果没有则是DoesNotExist,如果是多个结果MultipleObjectsReturned15QuerySet是一个容器,类列表的容器,实现了一部分列表的接口,比如执行迭代、索引、切片以及获取长度len。如果需要也可以使用list(QuerySet)转换成列表。
相关文章推荐
- [POJ3107]Godfather(树形dp)
- 为什么catagory可以增加成员方法,不可以增加成员变量
- Golang tls 链接通信
- libgdx 裁剪多边形(clip polygon、masking polygon)
- golang的的模板引擎之pongo2
- 【GOF】单例模式singleTon的再认识
- Windows+GO+beego
- django fields lookup methods
- django站点管理1
- django 模板if判断的时候==两边需要有空格
- ContentNegotiatingViewResolver解析器
- URAL 1851|GOV-internship|最小割
- django migrate error: table 'xxx' already exists
- mongoose使用简记
- Django ValidationError中的单下划线
- category的介绍与简单实用
- Git Step By Step - Step 2: Go Back in Time
- golang中的类和接口的使用
- Golang Basic - select and channel usage
- OnePointThreeAcres Google/April -1