カスタムモデルフィールドではなく、djangoのカスタムフォームフィールドについて説明する良い記事はありますか?私はグーグルを通して見つけることができませんでした。djangoでカスタムフォームフィールドを作成する方法に関するチュートリアル?
答えて
フォームフィールドをカスタマイズするのは簡単です:
class UpperCaseField(forms.CharField):
def clean(self, value)
try:
return value.upper()
except:
raise ValidationError
は、基本的には、あなたはそれが値戻りますようにクリーン()メソッドを書き換え、その後、ほとんどあなたが望むものに似ているフィールドを継承するクラスを作成します欲しいです。彼らが働くように書き込まれる必要があるいくつかのより多くの方法があるので、もう少し有用であるが、一方で
class MyObjectField(forms.ModelChoiceField):
# in this case, 'value' is a string representing
# the primary key of a MyObject
def clean(self, value):
try:
return MyObject.objects.get(pk=value)
except:
raise ValidationError
カスタムウィジェットが、行うのは難しいもう少し:ここでは別の例でありますスムーズに。
それはチュートリアルが、この小さなについてDjangoのドキュメントの話ではありません:組み込みのフィールドクラスが がニーズを満たしていない場合は
、あなたは簡単に カスタムフィールドのクラスを作成することができます。これを行うには、 のサブクラスを作成して django.forms.Fieldというサブクラスを作成します。その唯一の 要件は、 clean()メソッドを実装し、その
__init__()
メソッドが上記のコア引数 (必須、ラベル、 イニシャル、ウィジェット、help_text)を受け入れることです。
クリーンメソッドについては、at the django docsを参照してください。繰り返しますが、チュートリアルではありませんが、便利です。
django-extensionsなど、利用可能なdjangoアプリプロジェクトのコードを読んでたくさん学んでいますが、これはフォームフィールドをオーバーライドして、良い学習ツール(私にとっては少なくとも)です。これはあなたを始めるのを助けることができます。
いつもオープンソースコードと同じように、ソース自体を読むことで多くのことを学べます。さまざまなフォームフィールドがどのように定義されているかを確認するには、django.forms.fields
モジュールを参照してください。それらのほとんどは他のサブクラスであるため、それを複製して必要なものを変更できます。
最新のソースへのリンク:https://github.com/django/django/blob/master/django/forms/fields.py –
- 1. Django - オブジェクトをカスタムフォームフィールドに渡す
- 2. Pollチュートリアルに基づいてDjangoでHotOrNot/FaceMashサイトを作成する方法は?
- 3. 他のフォームフィールドをグループ化してカスタムフォームフィールドを作成する方法は?
- 4. Djangoで従属モデルの関係を作成する方法
- 5. djangoでURLを作成する方法
- 6. Xcode 4.2でユニバーサルアプリケーションを作成する方法に関するチュートリアルは誰でも手に入りますか?
- 7. iphoneアプリの使い方に関するアプリ内チュートリアルを作成するには?
- 8. チュートリアル/マニュアルautoexp.datでVisualizerを作成する方法
- 9. Djangoカスタムフォームフィールドの初期データ
- 10. Django:関連フィールドの関連フィールドでorder_byを作成する方法
- 11. Django、ビューアトミックを作成する方法は?
- 12. 同じプロジェクト内でdjangoアプリケーションを作成するアクセス方法= Django
- 13. Django ORMでデータベース関数を使用してクエリを作成する方法は?
- 14. Djangoテスト中に、managed = Falseで表を作成する方法
- 15. Androidのカスタムレイアウトの作成に関するチュートリアル?
- 16. カスタムフォームフィールドを持つこのコンテキストをモデル化する方法
- 17. 関数キューを作成する方法
- 18. Djangoで関連するデータの個別ビューを作成する
- 19. Django - foreignkeysのセットに関連するクエリーセットを作成する
- 20. Django:シェルにManyToManyFieldを持つオブジェクトを作成する方法は?
- 21. Djangoでカスタム関連マネージャを作成するには?
- 22. djangoでURLを生成する方法
- 23. マルチレックの使い方に関するチュートリアル
- 24. DjangoビューでDjango TimeFieldを作成する
- 25. django-cmsで複数のメニューを作成する方法
- 26. Djangoでユーザー用の登録フォームを作成する方法
- 27. djangoでカスタムモデルフィールドを作成する方法とその仕組み
- 28. djangoでon_delete = models.PROTECTのカスタム例外メッセージを作成する方法
- 29. DRY方法でアクティブ/アーカイブモデルを作成する(Django)
- 30. Djangoでカスタマイズ可能なユーザーアンケートを作成する方法
ありがとうございます。私はフィールドのレンダリングをカスタマイズする必要があるので、私はカスタムウィジェットを書く必要があると思います。 –
注:clean()はto_python()、validate()およびrun_validators()を実行します。 clean()をオーバーライドしてこれらを実装しないと、処理が混乱します。 – orokusaki
orokusakiが正しいとしたら、clean()をオーバーライドするには、少なくともsuper(UpperCaseField、self).clean(value) –