假设我有这两类:
class TeamMember(db.Entity):
member_id= PrimaryKey(int, auto=True)
name = Required(str)
team = Required('Team')
class Team(db.Entity):
team_id= PrimaryKey(int, auto=True)
name = Required(str)
team_members = Set(TeamMember)
我想选择特定团队(例如team_id == 1)中的所有TeamMembers。查询看起来像这样(C1):
TeamMember.select(lambda member: member.team == 1)[:]
如果我这样写,就会在下面出现错误:
Incomparable types 'Team' and 'int' in expression: member.team == 1
另一方面,我可以编写此代码,它将起作用(C2):
TeamMember.select(lambda member: member.team == Team[1])[:]
但是,我不想这样写它,因为我想创建对每个Entity类都适用的泛型函数:
def get_instances_from_db(classname, classname_var, var_value):
"""
:param classname: name of class
:param classname_var: name of class variable to search by
:param var_value: value of class variable
:return:
"""
return classname.select(lambda v: getattr(v, classname_var) == var_value)[:]
上面的方法将适用于与其他类Entity无关的变量,例如:
members = get_instances_from_db(TeamMember, "name", "some_team_member_name")
最后,我的问题是:是否可以将查询设置为按整数而不是按Entity对象进行搜索。或者,是否可以使用“ C1”行?
希望我已经足够清楚了! :)