如何检查我的数据存储中的重复数据并显示错误?

How to check duplicate data in my datastore and display the error?

正在研究 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 数据是否重复。如果它已经输入数据不允许保存并且需要显示错误消息。 我该怎么做?

webapp2 中有很好的 Unique 模型可用:

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)

这是事务检查唯一性的唯一方法。

https://webapp-improved.appspot.com/_modules/webapp2_extras/appengine/auth/models.html#Unique