如何检查我的数据存储中的重复数据并显示错误? [英] How to check duplicate data in my datastore and display the error?
问题描述
<$ p 我正在GAE,GAE数据存储和python上工作。 $ b $
类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')
$ b $ newcustomer = Customer(name = input_fullname, phone = input_phone,email = input_email)
self.redirect('/ addcustomer')
Da ta商店工作正常。我想根据全名检查我的 newcustomer
数据是否重复。如果它已经输入的数据不允许保存并且需要显示错误信息。
我该怎么做?
在webapp2中有很好的独特模式:
例如,假设我们有一个模型
User
,其中有三个属性,
必须在整个给定组:用户名
,auth_id
和
电子邮件
class User(model.Model):
username = model.StringProperty(required = True)
auth_id = model.StringProperty(required = True)
email = model.StringProperty(required = True)
为了确保在创建新的
User
时的属性唯一性,我们首先创建Unique
这些属性的记录,如果一切顺利
,那么我们可以保存新的用户
记录::@classmethod
def create_user(cls,username,auth_id,email):
#为给定的类和att组装唯一值ribute范围。
uniques = [
'User.username。%s'%username,$ b $'User.auth_id。%s'%auth_id,
'User.email。%s'%电子邮件,
]
#创建唯一的用户名auth_id和电子邮件。
成功,存在= Unique.create_multi(唯一)
如果成功:
#创建唯一值,所以我们可以保存用户。
user = User(用户名=用户名,auth_id = auth_id,email = email)
user.put()
返回用户
其他:
#这些值不是唯一的。
#列出失败的属性名称。
props = [name.split('。',2)[1] for unique]
raise ValueError('Properties%r are not unique。'%props)
这是以事务方式检查唯一性的唯一方法。
https://webapp-improved.appspot.com/_modules/webapp2_extras/appengine/auth/models.html#Unique
Am working on GAE,GAE datastore and python.
This is my dbmodel.py,
class Customer(db.Model):
name = db.StringProperty(required=True)
phone = db.PhoneNumberProperty(required=True)
email = db.EmailProperty(required=True)
this is my 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')
Data store is working fine. I want to check the my newcustomer
data duplicate or not based on fullname. if its already entered the data didn't allow to save and need to display the error message.
How can i do that?
There's good Unique model available in webapp2:
For example, suppose we have a model
User
with three properties that must be unique across a given group:username
,auth_id
andclass User(model.Model): username = model.StringProperty(required=True) auth_id = model.StringProperty(required=True) email = model.StringProperty(required=True)
To ensure property uniqueness when creating a new
User
, we first createUnique
records for those properties, and if everything goes well we can save the newUser
record::@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)
This is the only way to transactionally check the uniqueness.
https://webapp-improved.appspot.com/_modules/webapp2_extras/appengine/auth/models.html#Unique
这篇关于如何检查我的数据存储中的重复数据并显示错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!