django 表的联查

本文介绍了在Django中如何进行表的联查,特别是通过`to_field`指定关联字段以及使用`db_column`映射不同表中的字段。同时,展示了如何在查询时添加时间限制条件,以获取特定时间段内的数据。

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

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)
    create_time = models.DateTimeField('订单生成时间', auto_created=True)
    

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



class OrderReport(models.Model):
    order_no = models.ForeignKey(to='Orders', on_delete=models.CASCADE, to_field='order_no', db_column='order_no')
    name=models.CharField('车辆vin码', max_length=100)
   

    class Meta:
        db_table = 'order_reports'
        ordering = ['-id']
        managed = False

to_filed :被关联的字段名称,对应orders表中的字段

db_column:对应order_reports中的字段

 

查询时:

reports = models.OrderReport.objects.filter(order_no__uid=uid))

即可查询出符合orders表条件的所有的orderReport数据。

添加时间限制条件:获取开始结束时间:

 e_time = request.POST.get('e_datetime')
 b_time = request.POST.get('b_datetime')
 将开始结束时间序列化即可得到datetime类型的数据
 reports = models.OrderReport.objects.filter(order_no__create_time__range=(b_time, e_time))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值