Django:通过自定义属性过滤foo_set?

时间:2010-01-13 22:57:37

标签: django django-models

我有一个名为Product的模型,带有自定义属性:

def _get_active(self):
    o = get_option()
    if self.date_expiration == None:
        return True
    if self.date_expiration <= o.working_month:
        return False
    return True
active = property(_get_active)

...在我的一个方法中,我有这一行:

products = g.product_set.filter(active__exact=True)

但是尽管(我认为)我已经正确设置了属性,但上面的行给了我“无法将关键字'活动'解析为字段。”我在这里缺少什么?

提前致谢。

2 个答案:

答案 0 :(得分:3)

您只能查询实际字段,而不能查询属性。

答案 1 :(得分:1)

扩展Ignacio的答案,你可以这样做:

products = [x for x in g.product_set.iterator() if x.active]

虽然这样效率会非常低,因为您必须加载x.product_set中的每条记录。