数据库删除数据要考虑到某些数据是否为不可删除的, 例如有关联的数据
例子:
def get(self, role):
"""
不能删除的用户
1, 有手机充值记录的用户
2, 有积分充值记录的用户
3, 存在下级的用户
"""
try:
ids = self.get_argument("id", "").split(",")
if not ids:
return self.json({ "status" : "faild", "desc" : "请选择需要删除的数据!" })
deleted = []
for i in ids:
i_relation = db.user.find_one({ "_id" : ObjectId(i) }).relation
reg = "^%s/" % i_relation
if db.recharge.count({ "operator.$id" : ObjectId(i)}) > 0 \
or db.user.count({ "relation" : { "$regex" : reg } }) > 0 \
or db.deposit.count({ "user.$id" : ObjectId(i) }) > 0:
continue
deleted.append(i)
db.user.remove({"_id" : ObjectId(i)})
if not deleted:
return self.json({ "status" : "faild", "desc" : "选择的用户已被关联!" })
elif len(deleted) < len(ids):
return self.json({ "status" : "warning", "desc" : "没关联的用户已删除<br />部分用户已被关联,未能删除。" })
else:
return self.json({ "status" : "ok" })
except Exception, e:
url = "/user/" + role + "/delete"
self.system_error_record(url, e)