django model的get和filter方法的区别是什么

django model的get和filter方法的区别是什么,第1张

django的get和filter方法是djangomodel常用到的。为了说明它们两者的区别定义2个modelsclassStudent(modelsModel):name=modelsCharField('姓名',max_length=20,default='')age=modelsCharField('年龄')。

区别

区别是指两个或两个以上的事物间的不同,一般是在存在共同点的情况下说有"区别",世间万物,不可能任何东西都是一样的,世上没有两片一样的叶子。当两种相似的事物作比较时,它们的不同点便是区别。

你用all() 返回的是一个对象列表。这样的 [obj1, obj2, ]

使用 objobjectsget(id=) 这样得到的是一个对象, 或者使用 get_object_or_404(obj, id=)

这样的话, 使用 objobjectsget(id=)属性名 既可以了

或者

for obj in objobjectsall():

obj属性名

明白了吧

1、新建一个JUPYTER NOTEBOOK文档。

2、定义一个LIST列表并且打印看看结果。list = [3, 9, -7] print(list)。

3、为列表增加一个数字。listappend(10) print(list)。

4、字符串也是可以增加进去的。 listappend("string 123") print(list)。

5、列表里面更是可以含有其它列表。listappend([-3, -4]) print(list)。

6、如果要删除最后一个列表的值,可以这样处理。listpop() print(list)。

你的model定义的什么类型就是什么类型

比如

from djangodb import models

class Person(modelsModel):

你用Personobjectsget()得到的就是一个Person对象。如果没有找到这个对象的话,程序会报错,如果你不想在这报错的话。可以用Personobjectsfilter()得到的是以Person对象的组成的列表

首先对比下两个函数文档上的解释。

get

Returns the object matching the given lookup parameters, which should be in the format described in Field lookups

get() raises MultipleObjectsReturned if more than one object was found The MultipleObjectsReturned exception is an attribute of the model class

get() raises a DoesNotExist exception if an object wasn’t found for the given parameters This exception is also an attribute of the model class

filter

Returns a new QuerySet containing objects that do not match the given lookup parameters

The lookup parameters (kwargs) should be in the format described in Field lookups below Multiple parameters are joined via AND in the underlying SQL statement, and the whole thing is enclosed in a NOT()

输入参数

get 的参数只能是model中定义的那些字段,只支持严格匹配

filter 的参数可以是字段,也可以是扩展的where查询关键字,如in,like等

返回值

get 返回值是一个定义的model对象

filter 返回值是一个新的QuerySet对象,然后可以对QuerySet在进行查询返回新的QuerySet对象,支持链式 *** 作

QuerySet一个集合对象,可使用迭代或者遍历,切片等,但是不等于list类型(使用一定要注意)

异常

get 只有一条记录返回的时候才正常,也就说明get的查询字段必须是主键或者唯一约束的字段。当返回多条记录或者是没有找到记录的时候都会抛出异常

filter 有没有匹配的记录都可以

django的get和filter方法是django model常用到的,搞清楚两者的区别非常重要。

为了说明它们两者的区别定义2个models

class Student(modelsModel):

name = modelsCharField('姓名', max_length=20, default='')

age = modelsCharField('年龄', max_length=20, default='')

class Book(modelsModel):

因为客户端传递过来的数据是json数据,可以看成一个json对象。不是传过来的post表单,所以你用requestPOSTget('ID', '')这种肯定取不到值的。

def datasave(request):

    dict = {}

    info = 'Data log save success'

    try:

        if requestmethod == 'POST':

            req = simplejsonloads(requestraw_post_data)

            username = req['username']

            password = req['password']

            datas = req['datas']

            game_id1 = datas[0]['game_id']

   except:

        import sys

        info = "%s || %s" % (sysexc_info()[0], sysexc_info()[1])

    dict['message']=info

    dict['create_at']=str(ctime())

    json=simplejsondumps(dict)

    return )

requestraw_post_data表示的是从客户端发送过来的原始数据,为了纯字符串, 通过simplejson的loads方法将其转换为字典数据类型req

    上面的代码也演示了如何以JSON格式作为响应值, 而非HTML, 即通过simplejson的dumps方法, 将字典数据dict序列化为字符串形式,将通过>

以上就是关于django model的get和filter方法的区别是什么全部的内容,包括:django model的get和filter方法的区别是什么、django在读取数据库后返回的是一个对象,如何将对象中的字段(属性)读出、python django 怎么把数据查询结果保存到一个list里面等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9778075.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存