Django ORM Как запрашивать и получать значения при выполнении нескольких условий

У меня есть следующая модель

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)

    is_business = models.BooleanField()
    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 и страховки min max days.

Insurance_period Travel days Value
1-92 days 1-30 days 30
1-183 days 1-90 days 45
1-365 days 1-90 days 50
1-365 days 1-180 days 60

Моя проблема заключается в том, что, предположим, у меня есть 29 дней в качестве дней путешествия и 90 дней в качестве дней страхования Как мне вычислить значение с помощью запроса django? Так как фактическое значение для 90 дней страховых дней и 29 дней путешествия составляет 30.

Я пробовал делать так

    TimePeriod.objects.filter(is_business=True,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 как значение?

Я думаю, что получил ответ, которого мне не хватало.

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()
Вернуться на верх