views:

81

answers:

1

It seems that the unique constraint is not natively supported in GAE, although one can enforce unique check before putting an object to store.

But that was in January 2009, what about now? Can I specify unique constraint on a column during schema creation? i.e.

class Account(db.Model):
  name = db.StringProperty()
  email = db.StringProperty() as unique # something like this
  @classmethod
  def create(cls, name, email):
    a = Account(name=name, email=email)
    a.put()
    return a
+4  A: 

No, you still cannot specify unique during schema creation.

This issue is located here in case you want to watch it. It doesn't show up on their list of features on deck yet, so it seems like there are other features they will be working on first.

David Underhill
Supporting unique properties other than the key name would require global transactions, so it's unlikely we'll add it any time soon. For now, it's up to you to implement uniqueness yourself, through key names or 'lookaside' entities.
Nick Johnson