我已經通過重寫put方法和使用key.name
通過以下方式來實現它
class Program(db.Model):
name = db.StringProperty("Title")
slug = db.StringProperty("Slug")
def put(self):
if Program.get_by_key_name(self.slug):
raise UniqueConstraintViolation("slug", self.slug)
self._key_name = self.slug
return db.Model.put(self)
class UniqueConstraintViolation(Exception):
def __init__(self, scope, value):
super(UniqueConstraintViolation, self).__init__("Value '%s' is not unique within scope '%s'." % (value, scope,))
我將slug保存爲key.name,如果您嘗試添加另一個程序,它將檢查密鑰名稱是否已存在。這可能不是一個好方法,即時通訊也是python/app引擎的初學者。
這是關於某人使用輔助模型很好的文章:http://squeeville.com/2009/01/30/add-a-unique-constraint-to-google-app-engine/
編輯:我看見你還提供了那篇文章笑。
這是這個問題的重複:http://stackoverflow.com/questions/1185628/how-do-i-define-a-unique-property-for-a-model-in-google-app-engine – 2012-05-28 20:50:28