如何检查我的数据存储中的重复数据并显示错误? [英] How to check duplicate data in my datastore and display the error?

查看:121
本文介绍了如何检查我的数据存储中的重复数据并显示错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的dbmodel.py,

<$ 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 and email::

class 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 create Unique records for those properties, and if everything goes well we can save the new User 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆