在两个范围之间搜索配置文件



我想获取给定两个年龄之间的所有配置文件。 示例"从年龄:20 岁到年龄:30"在我的模型中,我保存了用户的出生日期而不是年龄。在这里,我需要将该出生日期转换为年龄,并希望获取给定年龄之间的配置文件。如果问题不正确,请帮助我纠正问题。

models.py

class profiles(models.Model):
    user = models.OneToOneField(User)
    full_name = models.CharField(max_length=200)
    birthday =  models.DateField(null=True)
    def age(self):
        return int((datetime.date.today() - self.birthday).days / 365.25  )
    age = property(age)

views.py

def search_results(request):
            from_age = form.cleaned_data['from_age']
            to_age = form.cleaned_data['to_age']
            query_set = profiles.objects.filter(gender=gender)
            if from_age < to_age:
                query_set = query_set.filter(
                    age__gte=from_age,
                    age__lte=to_age  
                )

尝试使用范围查找:

import datetime
def search_results(request):
    from_age = form.cleaned_data['from_age']
    to_age = form.cleaned_data['to_age']
    now = datetime.date.today()
    from_date = datetime.date(now.year-int(to_age), now.month, now.day)
    to_date = datetime.date(now.year-int(from_age), now.month, now.day)
    query_set = profiles.objects.filter(gender=gender,
                                        birthday__range=(from_date, to_date))

不能按属性进行筛选。

你应该反过来做:将年龄转换为日期,并对其进行过滤。

最新更新