编写Django模型以优化复杂过滤

时间:2015-01-01 07:13:57

标签: python django models

我有成千上万的房子的房地产数据:

这是一所房子的数据:

Year,Low_Price,High_Price

1999,$ 125,000,$ 146,000

2000,$ 122,000,$ 148,000

2001年,127,000美元,149,000美元

2002年,129,000美元,151,000美元

2003年,134,000美元,153,000美元

2004年,138,000美元,164,000美元

2005年,145,000美元,158,000美元

我想按Year,Low_Price和High_Price进行过滤。 例如,在2002年至2004年期间搜索房价,在128,000美元至152,000美元之间。

如果搜索参数与模型的匹配,则会显示房屋。 这是一个模型要过滤的大量数据,我不知道如何设置模型。

写出这样的模型:

price_low_1999 = $125,000
price_high_1999 = $146,000
etc...

对于每一个模型来说似乎都不太理想。

如何设置模型,以便在给定上述搜索参数的情况下过滤这些数据很容易?

2 个答案:

答案 0 :(得分:0)

如果您设置的模型如下,我不会发现问题:

class House(models.Model):
   year = models.IntegerField(max_length=4)
   low_price = models.FloatField()
   high_price = models.FloatField()
   # other house attributes ...

并过滤,例如房价在2002年至2004年之间,为128,000美元至152,000美元

houses = House.objects.filter(
                                 year__range=(2002, 2004), 
                                 low_price__gte=128.000, 
                                 high_price__lte=152.000
                              )

这是你想要的吗?

答案 1 :(得分:-1)

您需要两个型号,一个用于房屋,一个用于年度价格(字段房屋(外键),年份,price_low和price_high)。然后,您可以使用House.objects.filter(pk__in=Prices.objects.filter(year__gte=2012, year__lte=2014, price_low__gte=100000).values('house_id'))

进行查询