正在研究GAE,GAE数据存储区和python。
这是我的dbmodel.py,
class Customer(db.Model):
name = db.StringProperty(required=True)
phone = db.PhoneNumberProperty(required=True)
email = db.EmailProperty(required=True)
这是我的main.py,
class AddCustomerHandler(BaseHandler):
def get(self):
template = jinja_environment.get_template('template/addcustomer.html')
self.response.out.write(template.render(template_values))
def post(self):
input_fullname=self.request.get('fullname')
input_phone=self.request.get('phone')
input_email=self.request.get('email')
newcustomer=Customer(name=input_fullname,phone=input_phone,email=input_email)
self.redirect('/addcustomer')
数据存储工作正常。我想根据全名检查我的newcustomer
数据是否重复。如果已经输入的数据不允许保存并需要显示错误信息。
我怎么能这样做?
答案 0 :(得分:2)
webapp2中有很好的Unique模型:
例如,假设我们有一个具有三个属性的模型
User
在特定群组中必须是唯一的:username
,auth_id
和class User(model.Model): username = model.StringProperty(required=True) auth_id = model.StringProperty(required=True) email = model.StringProperty(required=True)
为了确保在创建新
User
时属性唯一,我们首先要做的 为这些属性创建Unique
条记录,如果一切顺利的话 我们可以保存新的User
记录::@classmethod def create_user(cls, username, auth_id, email): # Assemble the unique values for a given class and attribute scope. uniques = [ 'User.username.%s' % username, 'User.auth_id.%s' % auth_id, 'User.email.%s' % email, ] # Create the unique username, auth_id and email. success, existing = Unique.create_multi(uniques) if success: # The unique values were created, so we can save the user. user = User(username=username, auth_id=auth_id, email=email) user.put() return user else: # At least one of the values is not unique. # Make a list of the property names that failed. props = [name.split('.', 2)[1] for name in uniques] raise ValueError('Properties %r are not unique.' % props)
这是以事务方式检查唯一性的唯一方法。
https://webapp-improved.appspot.com/_modules/webapp2_extras/appengine/auth/models.html#Unique