新建一个项目,在项目中创建一个应用程序并命名。将应用程序值添加到settings.py,然后配置数据库连接设置。
在应用内模型中创建新模型:
1234567891011121314151617181920212223242526272829303132333435363738394041 | z django.db import❀♻ s 课程 4 ) 年龄 = ) ❀ 电子邮件 = models.EmailField() 4 . 型号 ): 名称 =❙ Fi.(max_length = 300 )
类 元: ‼‼‼ 书(型号.型号): ? = 300 ) 页 = 现场模型。价格 = models.FloatField () 评分 = 型号)el.Float。作者 = 型号.ForeignKey(作者, on_delete = models.CASCADE)
发布者=‸模型。外键(发布者,on_delete = models.CASCADE)
class 元: 1234567891011 | db_table '书' 类 图书订购(型号.型号): 图书型号= 。
“书” ,on_delete = 模型.CASCADE) 价格 = ❙ F F #书籍实际价格已售出 class 元: db_table =‼♻= ‼ 'book_order' |
makemigration后,进行迁移 ,然后手动将数据添加到表中,例如我添加的信息: 



然后配置URL,直到项目运行成功。 1.filter: 过滤,提取符合条件的数据并返回一个新的QuerySet。 2。排除: 排除,排除符合条件的数据并返回一个新的QuerySet。 例如,删除一本书中id大于等于2的书,并且id不能等于3的书。示例代码: books = models.Book.objects.filter(id__gt=1).exclude(id=3) 我们也可以使用Q表达式来实现, from django import。 书籍 = models.Book.objects.filter(id__gt=1).filter(~Q(id=3)) 3。 annotate: 为QuerySet中的每个对象添加用法查询表达式(聚合函数、F表达式、Q表达式、Func表达式等)的新字段。 例如添加一个名为author_name 的字段 from django.db.models import F books = models.Book.objects.annotate(author_name = F('author__name:')不在书籍模型中 首先没有作者姓名属性,只有一个由作者属性链接的外键。 author_name 是 book 下的作者属性下的姓名,即 book 表通过外键访问author 表中的 name 值 上面的代码做完后,会在书中创建一个新的author_name属性,但它只是在内存中,不会映射到数据库。负号。 示例 1234567891011 | def 索引2(请求): '-价格' ) 书籍: 打印“% s-%s” % (名称.书籍,价格.书籍)) 1234567891011 | 1234567891011 | 12345678910111213141516 | 12345678910111213141516 | 12345678910111213141516 | ttpResponse( ‘成功’ ) |
编辑对应的注释代码即可查看效果。 要求:按价格排序。如果价格相同,则按页数排序。价格由小到大,页数由大到小。为了方便地看到效果,可以先编辑数据库中的数据。 12345678910111213141516 | def Index2(请求):##1.对账面价格属性从小到大的❙#书籍 ) books = models.Book.objects。 order_by(' !! '-页' ) 书 v 打印 () "%s-%s-%s" % (书名,书价,书页数))
返回 '' ' ❙HttpResponse(❙HttpResponse ) |
注意: books = models.Book.objects.order_by('price','-pages') 不等于 books = models.Book.objects .order_by('price').order_by('-pages') 如果使用多个order_by命令打破了之前的排序规则,只使用最后一种排序方法。 order_by 方法不会更改信息在数据库中的位置,它只是提取数据并对其进行排序。 所以如果我们对数据库中的信息进行排序,那么我们就不必每次获取数据时都进行排序。需要做什么? 我们需要向模型添加一些代码。 例如:我们按照布克恶搞模型对奖品进行排序。如果价格相同,我们按照页数排名。价格由小到大,页数由大到小。 修改图书元类中的代码: 123 | Class meta: db_table = '图书订单' = [ '价格' ,‸❙‸'‸‼️这样数据库中的信息就排序好了。我们在删除数据时,不需要使用order_by来排序。但这需要重新进行迁移和迁移,所以这里就不演示了。 请求:按照每本书的销量排序 from django.db.models import Q,F,Count def index2(request): 1234567891011121314151617181920 | =Count( 'bookorder__id' )).order_by( ❙⁄‼ |
|
|
|
|
|
|
|
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。