이 기사는 Django의 ModelForm 구성 요소(코드 예제)에 대한 소개를 제공합니다. 이는 특정 참조 가치가 있으므로 도움이 필요할 수 있습니다.
보통 Django 프로젝트에서 우리가 작성하는 대부분의 내용은 Django 모델과 밀접하게 매핑되는 형식입니다. 예를 들어 책 모델이 있고 모델에 책 정보를 추가하고 편집하는 양식을 만들 수도 있습니다. 이 경우 모델에서 해당 필드를 이미 정의했으므로 양식에서 필드를 정의하는 것은 중복됩니다.
이러한 이유로 Django는 Django의 모델인 ModelForm에서 Form을 생성할 수 있는 보조 클래스를 제공합니다.
form과 모델의 조합을 정의합니다.
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'}), }
클래스 메타에서 일반적으로 사용되는 매개 변수:
model = models.Book # 对应的Model中的类 fields = "__all__" # 字段,如果是__all__,就是表示列出所有的字段 exclude = None # 排除的字段 labels = None # 提示信息 help_texts = None # 帮助提示信息 widgets = None # 自定义插件 error_messages = None # 自定义错误信息
일반 양식 양식 유효성 검사 유형과 유사하게 ModelForm 양식 유효성 검사는 is_valid()를 호출하거나 오류 속성에 액세스할 때 암시적으로 호출됩니다.
Form 클래스를 사용하는 것처럼 로컬 후크 방법과 전역 후크 방법을 사용자 정의하여 사용자 정의 확인 규칙을 구현할 수 있습니다.
특정 필드를 재정의하지 않고 유효성 검사기 속성을 설정하면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!