データストア内のメールアドレスの一意性を検証しようとしています。問題は、これによりエントリを編集/更新できないということです(たとえば、display_nameのみを変更したい場合 - 下記のmodels.pyを参照してください)。App Engineでdjangoformsを使用したユニークな値の検証
私は(私はすでにデータストアエントリのキーを知っているようにあらかじめ入力データストアのエントリで)djangoformsを使用して、フォームのビルドを提出しています:
forms.UserForm(instance=db.get(db.Key(key)))
POSTメソッドを使用してフォームを送信した後、私はデータストアから詳細を取得そして送信されたフォームでこれらを関連付ける:
entry = db.get(db.Key(self.request.get('key')))
data = forms.UserForm(data=self.request.POST, instance=entry)
if data.is_valid():
...
形態は、次に(forms.pyに)次のフォームクラスを使用して検証
:
from django import forms
from google.appengine.ext.db import djangoforms
import models
class UserForm(djangoforms.ModelForm):
class Meta:
model = models.AuthorizedUsers
def clean_email(self):
"""Prevent duplicate email addresses."""
if self.Meta.model.all().filter('email =', self.cleaned_data['email']).count():
raise forms.ValidationError('Duplicate Entry: %s.' %
self.cleaned_data['email'])
return self.cleaned_data['email']
私はここで何を
class AuthorizedUsers(db.Model):
"""Base model class for storing user permissions."""
email = db.StringProperty()
display_name = db.StringProperty()
任意の提案をしないのです(models.pyに)次のモデルを使用していますか?エントリを更新するときにValidationErrorを発生させないようにするにはどうすればよいですか?同じメールアドレスを持つ新しいデータストアエントリを追加しないようにしたいと考えています。
ご協力いただきありがとうございます。
あなたは絶対的なヒーローです!感謝万円!それは完璧に働いた!偉大なself.changed_dataについて学ぶために: – reallife
喜んで私は助けることができる:) – Spike