使用自动计算的属性字段进行 Django 过滤查询 [英] Django filter query on with property fields automatically calculated
本文介绍了使用自动计算的属性字段进行 Django 过滤查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有自动计算属性字段的 Django Order 模型.如何进行过滤查询.
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]
计算从今天开始得到 1,3,7 个日期时间
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)]
如何通过 ORM 查询过滤
How to filter by ORM query
Order.objects.filter(expire__in=days)
Django 抛出错误.
Django is throwing error.
FieldError: Cannot resolve keyword 'expire' into field.
推荐答案
最终将 expire 添加到模型中,计算 save 方法的值.现在我可以了
Ended up adding expire to model, calculating the value on save method. Now i can do
Order.objects.filter(expire__in=days)
这篇关于使用自动计算的属性字段进行 Django 过滤查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文