- GAE Pythonを学んでいるところ。
- DataStoreにはUnique Constraintがないみたい。
class Location(db.Model):
user = db.UserProperty(required = True)
name = db.StringProperty('Name', required = True)
description = db.TextProperty('Description')
class LocationForm(djangoforms.ModelForm):
class Meta:
model = Location
exclude = ('user',)
def clean_name(self):
name = self.clean_data['name']
user = self.instance.user
if get_my_location_by_name(user, name):
raise forms.ValidationError('This location name is in use already')
return name
def get_my_location_by_name(user, name):
return Location.gql("WHERE user = :user and name = :name",
user = user,
name = name).get()
- これでOK。
- save()が呼ばれる時にis_valid()が評価され、clean_name()が呼ばれる。
- GAEのDjangoは0.96なので、最近のとModelFormの扱いが微妙に違うのが難点。clean_dataとcleaned_data、みたいな。