我正在努力建立一个评估系统 这是我的班级
class Goal(db.Expando):
GID = db.IntegerProperty(required=True)
description = db.TextProperty(required=True)
time = db.FloatProperty(required=True)
weight = db.IntegerProperty(required=True)
Emp = db.UserProperty(auto_current_user=True)
Status = db.BooleanProperty(default=False)
以下事项由员工提供,
class SubmitGoal(webapp.RequestHandler):
def post(self):
dtw = simplejson.loads(self.request.body)
try:
maxid = Goal.all().order("-GID").get().GID + 1
except:
maxid = 1
try:
g = Goal(GID=maxid, description=dtw[0], time=float(dtw[1]), weight=int(dtw[2]))
g.put()
self.response.out.write(simplejson.dumps("Submitted"))
except:
self.response.out.write(simplejson.dumps("Error"))
现在,此处管理员检查目标并批准或不批准...如果已批准,则状态将在数据存储中存储为true,否则为false
idsta = simplejson.loads(self.request.body)
try:
g = db.Query(Goal).filter("GID =", int(idsta[0])).get()
if g:
if idsta[1]:
g.Status=True
try:
del g.Comments
except:
None
else:
g.Status=False
g.Comments=idsta[2]
db.put(g)
self.response.out.write(simplejson.dumps("Submitted"))
except:
self.response.out.write(simplejson.dumps("Error"))
现在,这就是我卡住的地方......“filter('status =',True)”..这将返回所有状态为真的实体..意味着哪些被批准..我想要那些实体已批准的AND尚未经过员工评估..
def get(self):
t = []
for g in Goal.all().filter("Status = ",True):
t.append([g.GID, g.description, g.time, g.weight, g.Emp])
self.response.out.write(simplejson.dumps(t))
def post(self):
idasm = simplejson.loads(self.request.body)
try:
g = db.Query(Goal).filter("GID =", int(idasm[0])).get()
if g:
g.AsmEmp=idasm[1]
db.put(g)
self.response.out.write(simplejson.dumps("Submitted"))
except:
self.response.out.write(simplejson.dumps("Error"))
我该怎么做?据我所知,如果我添加另一个过滤器,如“filter('AsmEmp =',而不是None)”,这只会返回那些具有AsmEmp属性的实体,反之亦然。
答案 0 :(得分:4)
答案 1 :(得分:0)
你不能简单地为employee_assessed = db.user添加另一个字段吗? 并且在评估时只填充它?
答案 2 :(得分:0)
记录不缺少数据存储区中的属性,它只是设置为None。您可以使用Goal.all().filter('status =', True).filter('AsmEmp =', None)
查询这些记录。
关于您的代码的一些附带建议:
.fetch(n)
获取所需的结果数。编辑:我没注意到你使用的是Expando - 在这种情况下@ Daniel的回答是正确的。但是,似乎没有任何理由在这里使用Expando。将属性添加到模型(以及更新现有实体)将是最简单的解决方案。