如何在python和Google AppEngine中更改集合的默认属性

时间:2009-12-23 08:22:47

标签: python google-app-engine

在以下代码中:

class ClassA(db.Model):
    name = db.StringProperty()

class ClassB(db.Model):
    name = db.StringProperty()
    deleted_flag = db.BooleanProperty()
    classA = db.ReferenceProperty(ClassA)

ClassA将拥有一个名为classb_set的属性。当我在代码中调用classb_set时,我不希望它返回具有deleted_flag = true的项目。

如何更改classb_set查询的默认过滤器?我的第一直觉是在ClassA中创建另一个执行此过滤器的方法,但是有一种方法可以使classb_set属性保持不变吗?

1 个答案:

答案 0 :(得分:4)

您始终可以使用Python属性来实现目标:

class ClassA(db.Model):
    name = db.StringProperty()

    def __get_classBdeleted(self):
        return self.classB_set.filter('deleted_flag =', 'True')

    classBdeleted = property(__get_classBdeleted)

class ClassB(db.Model):
    name = db.StringProperty()
    deleted_flag = db.BooleanProperty()
    classA = db.ReferenceProperty(ClassA)