Django过滤器查询与属性字段自动计算 [英] Django filter query on with property fields automatically calculated
本文介绍了Django过滤器查询与属性字段自动计算的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有Django订单模型,属性字段自动压缩。如何进行过滤器查询。
class Order(models.Model):
@property
def expire(self):
return self.created + datetime.timedelta(days = self.days_left())
@property
def days_left(self)
return self.recurrence_period * self._recurrence_unit_days [self.recurrence_unit]
从今天起的1,3,7个日期时间
settings.SUBSCRIPTION_EXPIRATION_REMIND = [1,3,7]
days = map(lambda x:datetime.date.today()+ datetime.timedelta(days = x),settings.SUBSCRIPTION_EXPIRATION_REMIND)
[datetime.date(2015,7,28)
datetime.date(2015,7,30),
datetime.date(2015,8,3)]
如何通过ORM查询过滤
Order.objects.filter(expire__in = days)
Django正在抛出错误。
FieldError:无法解析关键字到期进入字段。
解决方案
结束添加到期模型,计算值保存方法。现在我可以做
Order.objects.filter(expire__in = days)
/ pre>
There is Django Order model with property fields automatically calucated. How to do a filter query.
class Order(models.Model): @property def expire(self): return self.created + datetime.timedelta(days=self.days_left()) @property def days_left(self): return self.recurrence_period * self._recurrence_unit_days[self.recurrence_unit]
Calculation done to get 1,3,7 datetime days from today
settings.SUBSCRIPTION_EXPIRATION_REMIND = [1, 3, 7] days = map(lambda x: datetime.date.today() + datetime.timedelta(days=x), settings.SUBSCRIPTION_EXPIRATION_REMIND) [datetime.date(2015, 7, 28), datetime.date(2015, 7, 30), datetime.date(2015, 8, 3)]
How to filter by ORM query
Order.objects.filter(expire__in=days)
Django is throwing error.
FieldError: Cannot resolve keyword 'expire' into field.
解决方案Ended up adding expire to model, calculating the value on save method. Now i can do
Order.objects.filter(expire__in=days)
这篇关于Django过滤器查询与属性字段自动计算的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文