次の質問に対する回答が見つかりませんでした。調べるのに数時間かかりました。私はそれを解決する私のアプローチと答えを追加します。Djangoフォームがクリーンではない<fieldname>(この場合はclean_email)
私はThis personからYouTubeチュートリアルに従っています。何らかの理由で同じコードを入力していて、すべての文字をチェックしました。まだ何らかの理由で私のクリーニング機能が呼び出されていません。おそらくrelated questionが類似したものを示して以来、おそらく単純なものでしょう。それはおそらく私が間違って取得するフレームワークのものですが、私はそれが何であるか分からないでしょう。
ここに関連コードがあります。しばらくの間、print文を使用して、その質問を読んだ後
forms.py(his Githubから完全なコピー/ペースト)
from django import forms
from .models import SignUp
class ContactForm(forms.Form):
full_name = forms.CharField(required=False)
email = forms.EmailField()
message = forms.CharField()
class SignUpForm(forms.ModelForm):
class Meta:
model = SignUp
fields = ['full_name', 'email']
### exclude = ['full_name']
def clean_email(self):
email = self.cleaned_data.get('email')
email_base, provider = email.split("@")
domain, extension = provider.split('.')
# if not domain == 'USC':
# raise forms.ValidationError("Please make sure you use your USC email.")
if not extension == "edu":
raise forms.ValidationError("Please use a valid .EDU email address")
return email
# Final part is ommited, since it's not relevant.
(チュートリアルからオーバー型付け)admin.py
from django.contrib import admin
# Register your models here.
from .models import SignUp
from .forms import SignUpForm
class SignUpAdmin(admin.ModelAdmin):
list_display = ['__unicode__', 'timestamp', 'updated']
class Meta:
model = SignUp
form = SignUpForm
admin.site.register(SignUp, SignUpAdmin)
いいえ。あなたはMetaクラスを削除する必要はありませんでした。重要なことは、clean_emailメソッドがMetaクラスの中に入れ子になっていることを暗示しているのに対し、Metaクラスの外側ではあるがメインフォームクラス内にあるはずです。 –
はい、入れ子になっているのは私が使用すべき単語グループです。ありがとう:) –