首页>>后端>>Python->用django怎么排序查询(django 或查询)

用django怎么排序查询(django 或查询)

时间:2023-12-02 本站 点击:0

本篇文章首席CTO笔记来给大家介绍有关用django怎么排序查询以及django 或查询的相关内容,希望对大家有所帮助,一起来看看吧。

本文目录一览:

1、python django 怎么把数据查询结果保存到一个list里面2、请问django如何将字符型字段按数值型排序,如‘12,123,1111,133’,排序后结果为12,123,133,1111,在线等3、django查询1列。怎么查询一列,和select name from a。一样4、Django中复杂的查询5、django排序怎么将字符型字段按整型排序6、python + django 多表联合查询方法求教

python django 怎么把数据查询结果保存到一个list里面

1、新建一个JUPYTER NOTEBOOK文档。

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

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

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

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

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

请问django如何将字符型字段按数值型排序,如‘12,123,1111,133’,排序后结果为12,123,133,1111,在线等

在template里无法排序。需要在view里做。

办法是这样。

tmps='12,123,1111,133'

tmps=",".join([str(c) for c in [int(c) for c in tmps.split(",")].sort()])

分开写是这样

tmps='12,123,1111,133'

str_list=tmps.split(",")

int_list=[int(c) for c in str_list]

int_list.sort()

str_list2=['%s'%c for c in int_list]

output_str=",".joint(str_list2)

django查询1列。怎么查询一列,和select name from a。一样

xxx.objects.get()例如查询Car对象的id为5的那列

Car.objects.get(id=5)值得注意的是,get()方法只能用于查一列的,如果返回结果是没有或者超过1条,都会报错,所以如果不确定的话,用Car.objects.filter(id=5)返回的列表,允许为空,如果只有一条,你取第一条就完了

Django中复杂的查询

在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较。如果我们要对两个字段的值做比较,那该怎么做呢?

Django 提供 F() 来做这样的比较。F() 的实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段的值。

Django 支持 F() 对象之间以及 F() 对象和常数之间的加减乘除和取模的操作。

filter() 等方法中的关键字参数查询都是一起进行“AND” 的。 如果你需要执行更复杂的查询(例如OR 语句),你可以使用Q 对象。

from django.db.models import Q

Q(title__startswith='Py')

Q 对象可以使用 和| 操作符组合起来。当一个操作符在两个Q 对象上使用时,它产生一个新的Q 对象。

查询名字叫水浒传或者价格大于100的书

你可以组合 和| 操作符以及使用括号进行分组来编写任意复杂的Q 对象。同时,Q 对象可以使用~ 操作符取反,这允许组合正常的查询和取反(NOT) 查询:

查询函数可以混合使用Q 对象和关键字参数。所有提供给查询函数的参数(关键字参数或Q 对象)都将"AND”在一起。但是,如果出现Q 对象,它必须位于所有关键字参数的前面。例如:

查询名字叫水浒传与价格大于100的书

django排序怎么将字符型字段按整型排序

搞这个问题搞了很久,终于自己给弄出来啦,虽然这个提问时间过了这么久了,不过以后说不定也会有人遇到同样的问题,一搜就搜到这里了,所以还是把自己的方法附上

本人用MySQL数据库,chart表中有个time字段,字符型,想让查询结果按照time字段的整型排序

list=Chart.objects.extra(select={'t':'time+0'})

list=list.extra(order_by=["t"])

相当于sql语句

SELECT *,time+0 AS t FROM chart ORDER BY t

问题完美解决

python + django 多表联合查询方法求教

先让我们回忆一下在第五章里的关于书本(book)的数据模型:1fromdjango.dbimportmodelsclassPublisher(models.Model):name=models.CharField(max_length=30)address=models.CharField(max_length=50)city=models.CharField(max_length=60)state_province=models.CharField(max_length=30)country=models.CharField(max_length=50)website=models.URLField()def__unicode__(self):returnself.nameclassAuthor(models.Model):first_name=models.CharField(max_length=30)last_name=models.CharField(max_length=40)email=models.EmailField()def__unicode__(self):returnu'%s%s'%(self.first_name,self.last_name)classBook(models.Model):title=models.CharField(max_length=100)authors=models.ManyToManyField(Author)publisher=models.ForeignKey(Publisher)publication_date=models.DateField()def__unicode__(self):returnself.title如我们在第5章的讲解,获取数据库对象的特定字段的值只需直接使用属性。例如,要确定ID为50的书本的标题,我们这样做:frommysite.books.modelsimportBookb=Book.objects.get(id=50)b.titleu'TheDjangoBook'但是,在之前有一件我们没提及到的是表现为ForeignKey或ManyToManyField的关联对象字段,它们的作用稍有不同。访问外键(ForeignKey)值当你获取一个ForeignKey字段时,你会得到相关的数据模型对象。例如:b=Book.objects.get(id=50)b.publisherb.publisher.websiteu''对于用``ForeignKey``来定义的关系来说,在关系的另一端也能反向的追溯回来,只不过由于不对称性的关系而稍有不同。通过一个``publisher``对象,直接获取books,用publisher.book_set.all(),如下:p=Publisher.objects.get(name='ApressPublishing')p.book_set.all()[,,]实际上,book_set只是一个QuerySet(参考第5章的介绍),所以它可以像QuerySet一样,能实现数据过滤和分切,例如:1p=Publisher.objects.get(name='ApressPublishing')p.book_set.filter(name__icontains='django')[,]属性名称book_set是由模型名称的小写(如book)加_set组成的。访问多对多值(Many-to-ManyValues)多对多和外键工作方式相同,只不过我们处理的是QuerySet而不是模型实例。例如,这里是如何查看书籍的作者:b=Book.objects.get(id=50)b.authors.all()[,]b.authors.filter(first_name='Adrian')[]b.authors.filter(first_name='Adam')[]反向查询也可以。要查看一个作者的所有书籍,使用author.book_set,就如这样:a=Author.objects.get(first_name='Adrian',last_name='Holovaty')a.book_set.all()[,]这里,就像使用ForeignKey字段一样,属性名book_set是在数据模型(model)名后追加_set。更改数据库模式(DatabaseSchema)3在我们在第5章介绍syncdb这个命令时,我们注意到syncdb仅仅创建数据库里还没有的表,它并不对你数据模型的修改进行同步,也不处理数据模型的删除。如果你新增或修改数据模型里的字段,或是删除了一个数据模型,你需要手动在数据库里进行相应的修改。这段将解释了具体怎么做:当处理模型修改的时候,将Django的数据库层的工作流程铭记于心是很重要的。如果模型包含一个未曾在数据库里建立的字段,Django会报出错信息。当你第一次用Django的数据库API请求表中不存在的字段时会导致错误(就是说,它会在运行时出错,而不是编译时)。3Django不关心数据库表中是否存在未在模型中定义的列。Django不关心数据库中是否存在未被模型表示的表格。1改变模型的模式架构意味着需要按照顺序更改Python代码和数据库。添加字段1当要向一个产品设置表(或者说是model)添加一个字段的时候,要使用的技巧是利用Django不关心表里是否包含model里所没有的列的特性。策略就是现在数据库里加入字段,然后同步Django的模型以包含新字段。3然而这里有一个鸡生蛋蛋生鸡的问题,由于要想了解新增列的SQL语句,你需要使用Django的manage.pysqlall命令进行查看,而这又需要字段已经在模型里存在了。(注意:你并不是非得使用与Django相同的SQL语句创建新的字段,但是这样做确实是一个好主意,它能让一切都保持同步。)3这个鸡-蛋的问题的解决方法是在开发者环境里而不是发布环境里实现这个变化。(你正使用的是测试/开发环境,对吧?)下面是具体的实施步骤。首先,进入开发环境(也就是说,不是在发布环境里):在你的模型里添加字段。运行manage.pysqlall[yourapp]来测试模型新的CREATETABLE语句。注意为新字段的列定义。开启你的数据库的交互命令界面(比如,psql或mysql,或者可以使用manage.pydbshell)。执行ALTERTABLE语句来添加新列。使用Python的manage.pyshell,通过导入模型和选中表单(例如,MyModel.objects.all()[:5])来验证新的字段是否被正确的添加,如果一切顺利,所有的语句都不会报错。3然后在你的产品服务器上再实施一遍这些步骤。启动数据库的交互界面。5执行在开发环境步骤中,第三步的ALTERTABLE语句。将新的字段加入到模型中。如果你使用了某种版本控制工具,并且在第一步中,已经提交了你在开发环境上的修改,现在,可以在生产环境中更新你的代码了(例如,如果你使用Subversion,执行svnupdate。重新启动Webserver,使修改生效。让我们实践下,比如添加一个num_pages字段到第五章中Book模型。首先,我们会把开发环境中的模型改成如下形式:classBook(models.Model):title=models.CharField(max_length=100)authors=models.ManyToManyField(Author)publisher=models.ForeignKey(Publisher)publication_date=models.DateField()**num_pages=models.IntegerField(blank=True,null=True)**def__unicode__(self):returnself.title

结语:以上就是首席CTO笔记为大家介绍的关于用django怎么排序查询和django 或查询的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/10178.html