2014-01-16 35 views
2

我想获得给定两个年龄段之间的所有配置文件。示例“从年龄:20岁到30岁” 在我的模型中,不是年龄,我保存了用户的出生日期。在这里我需要将出生日期转换为年龄,并且想要获得给定ages.If问题是不正确的,请帮我纠正这个问题。两个范围之间的搜索配置文件

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 
       ) 

回答

2

尝试用range查找:

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)) 
+0

它非常helpful.thanks .. – Thameem

2

不能对一个属性进行过滤。

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