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

前端 未结 1 932
花落未央
花落未央 2021-01-26 00:24

Am working on GAE,GAE datastore and python.

This is my dbmodel.py,

class Customer(db.Model):
    name = db.StringProperty(required=True)
    phone = db.         


        
相关标签:
1条回答
  • 2021-01-26 01:14

    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

    0 讨论(0)
提交回复
热议问题