この記事では、Django の ModelForm コンポーネントの概要 (コード例) を紹介します。これには特定の参考値があります。必要な友人は参照できます。お役に立てば幸いです。help 。
通常、Django プロジェクトでは、私たちが記述するもののほとんどは、Django のモデルに密接にマップされたフォームです。たとえば、Book モデルがあり、そのモデルに書籍情報を追加および編集するためのフォームを作成するとします。この場合、それらのフィールドはモデル内ですでに定義されているため、フォーム内でのフィールドの定義は冗長になります。
このため、Django は、Django のモデル (ModelForm) からフォームを作成できる補助クラスを提供します。
フォームとモデルの組み合わせ。
from django import forms from crm import models class RegForm(forms.ModelForm): password = forms.CharField( widget=forms.PasswordInput, label='密码', min_length=6, max_length=12 ) re_password = forms.CharField( widget=forms.PasswordInput, label='确认密码', min_length=6, max_length=12 ) mobile = forms.CharField( ) class Meta: model = models.UserProfile # 指定model fields = '__all__' # 全部字段 # fields = ['username','password'] # 指定字段 exclude = ['is_active'] # 除某个字段之外的其余字段 labels = { 'username':'用户名' } error_messages = { 'min_length': '太短了', } widgets = { 'username': forms.TextInput(attrs={'placeholder': '用户名@xx.com'}), }
class Meta で一般的に使用されるパラメータ:
model = models.Book # 对应的Model中的类 fields = "__all__" # 字段,如果是__all__,就是表示列出所有的字段 exclude = None # 排除的字段 labels = None # 提示信息 help_texts = None # 帮助提示信息 widgets = None # 自定义插件 error_messages = None # 自定义错误信息
通常の Form フォーム検証タイプと同様に、ModelForm フォーム検証では is_valid() を呼び出すか、エラーにアクセスする必要があります。プロパティを使用するときに暗黙的に。
ローカル フック メソッドとグローバル フック メソッドをカスタマイズして、Form クラスを使用するのと同じようにカスタム検証ルールを実装できます。
特定のフィールドを書き換えず、validators 属性を設定しない場合、ModelForm はモデル内のフィールドのバリデーターに従って検証されます。
各 ModelForm には save() メソッドもあります。このメソッドは、フォームにバインドされたデータに基づいてデータベース オブジェクトを作成および保存します。 ModelForm のサブクラスは、既存のモデル インスタンスをキーワード引数インスタンスとして受け入れることができます。この機能が提供されている場合、save() はインスタンスを更新します。指定しない場合、save() はモデルの新しいインスタンスを作成します:
>>> from myapp.models import Book >>> from myapp.forms import BookForm # 根据POST数据创建一个新的form对象 >>> form_obj = BookForm(request.POST) # 创建书籍对象 >>> new_ book = form_obj.save() # 基于一个书籍对象创建form对象 >>> edit_obj = Book.objects.get(id=1) # 使用POST提交的数据更新书籍对象 >>> form_obj = BookForm(request.POST, instance=edit_obj) >>> form_obj.save()
以上がDjango の ModelForm コンポーネントの概要 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。