Django ORM如何在满足多个条件时查询并获取值

4bbkushb  于 2022-11-18  发布在  Go
关注(0)|答案(1)|浏览(436)

我有以下型号

class TimePeriod(BaseModel):
    product = models.ForeignKey(to=Product, on_delete=models.CASCADE)
    min_travel_days = models.PositiveIntegerField()
    max_travel_days = models.PositiveIntegerField()
    value = models.DecimalField(max_digits=19, decimal_places=10)

    insurance_period_min_days = models.PositiveIntegerField(
        null=True, blank=True)
    insurance_period_max_days = models.PositiveIntegerField(
        null=True, blank=True)

产品型号为

class Product(BaseModel):     
        name = models.CharField(max_length=255)

我有下面的工作表来计算min_days和max_days以及保险最小最大天数。
| 保险_期间|差旅天数|数值|
| - -|- -|- -|
| 1-92天后|1-30天|三十|
| 1-183天|1-90天|四十五|
| 1-365天|1-90天|五十个|
| 1-365天|1-180天|六十|
我的问题是,假设我有29天的旅行天数和90天的保险天数,我如何使用django查询来计算这个值?因为90天的保险天数和29天的旅行时间的实际值是30
我试过这样做

TimePeriod.objects.filter(product__name='silver',insurance_period_min_days__lte=90,insurance_period_max_days__gte=90,
min_travel_days__lte=29,max_travel_days__gte=29).values('value').first()

我得到了4个不同的结果,因为我的查询满足了上表的所有条件,我可以用任何方法来满足上表的条件?得到30作为值?

w8f9ii69

w8f9ii691#

我想我得到了答案我错过了订单

TimePeriod.objects.filter(is_business=True,policy__slug='silver',insurance_period_min_days__lte=91,insurance_period_max_days__gte=91,min_days__lte=30,max_days__gte=30).values('value').order_by('value').first()

相关问题