django 查询数据库条件设置及分页

本文介绍了如何在Django中进行单参数和多参数的数据库查询,并详细讲解了如何利用Paginator实现高效的分页操作,以支撑后台服务器对前端和移动端的数据供给。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

django构建后台服务器,为前端和移动端提供数据支持,会使用到数据库的一些基本操作。

单参数查询:

Models:

     

class Orders(models.Model):
    order_no = models.CharField('订单编码', max_length=20, unique=True)
    uid = models.IntegerField('用户id', default=0)
    vin = models.CharField('车辆vin码', max_length=17)
    car_name = models.CharField('车辆名称', max_length=100)
    year_id = models.IntegerField('车辆年款id', default=0)
    create_time = models.DateTimeField('订单生成时间', auto_now_add=True)
    status = models.IntegerField('订单状态', default=1)
    pay_price = models.DecimalField('已支付金额', max_digits=10, decimal_places=2)
    pay_status = models.IntegerField('支付状态', default=1)
    price = models.DecimalField('订单总金额', max_digits=10, decimal_places=2)
    discount = models.DecimalField('优惠金额', max_digits=10, decimal_places=2)
    invoice_status = models.IntegerField('开票状态', default=1)
    type = models.IntegerField('订单类型', default=1)
    authorization_img = models.CharField('用户授权', max_length=20)
    car_vin_img = models.CharField('车辆vin码', max_length=20)

    def __str__(self):
        return self.vin + ':' + self.order_no

    def to_dict(self, list):
        return model_to_dict(self, list)

    class Meta:
        ordering = ['-create_time']
        db_table = 'orders'
        managed = False

对表中的数据进行查询:

reports = models.OrderReport.objects.filte(uid=uid)

多参数查询:

  

 if uid:
        kwargs['order_no__uid'] = uid
    if e_time:
        kwargs['order_no__create_time__lt'] = get_time(e_time)
    if b_time:
        kwargs['order_no__create_time__gt'] = get_time(b_time)
    reports = models.OrderReport.objects.filter(**kwargs)

添加时间参数,也就可以添加其他参数。

分页:

     分页使用Paginator来进行操作。

from django.core.paginator import Paginator 
paginator =   Paginator(reports,rows)#根据rows将数据划分开,然后再获取相关页数据 
report_list = paginator.get_page(pages)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值