Maison > développement back-end > Tutoriel Python > Introduction au composant ModelForm dans Django (exemple de code)

Introduction au composant ModelForm dans Django (exemple de code)

不言
Libérer: 2019-03-13 13:23:17
avant
2383 Les gens l'ont consulté

Cet article vous présente une introduction au composant ModelForm dans Django (exemples de code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. .

Habituellement, dans les projets Django, la plupart de ce que nous écrivons sont des formulaires qui correspondent étroitement aux modèles de Django. Par exemple, vous disposez peut-être d'un modèle Livre et vous souhaitez créer un formulaire pour ajouter et modifier des informations sur le livre dans le modèle. Dans ce cas, définir les champs dans le formulaire sera redondant puisque nous avons déjà défini ces champs dans le modèle.

Pour cette raison, Django fournit une classe d'assistance qui nous permet de créer un formulaire à partir du modèle de Django, qui est ModelForm.

définition modelForm

La combinaison de la forme et du modèle.

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'}),
        }
Copier après la connexion

Paramètres couramment utilisés dans la classe Meta :

model = models.Book  # 对应的Model中的类
fields = "__all__"  # 字段,如果是__all__,就是表示列出所有的字段
exclude = None  # 排除的字段
labels = None  # 提示信息
help_texts = None  # 帮助提示信息
widgets = None  # 自定义插件
error_messages = None  # 自定义错误信息
Copier après la connexion

Validation ModelForm

Similaire au type de validation de formulaire Form ordinaire, la validation du formulaire ModelForm est effectuée en appelant is_valid ( ) ou implicitement lors de l'accès à l'attribut erreurs.

Nous pouvons personnaliser les méthodes de hook locales et les méthodes de hook globales pour implémenter des règles de vérification personnalisées, tout comme en utilisant la classe Form.

Si nous ne remplaçons pas des champs spécifiques et définissons l'attribut validators, ModelForm est vérifié en fonction des validateurs des champs du modèle.

Méthode save()

Chaque ModelForm possède également une méthode save(). Cette méthode crée et enregistre un objet de base de données basé sur les données liées au formulaire. Les sous-classes de ModelForm peuvent accepter une instance de modèle existante comme instance d'argument de mot-clé ; si cette fonctionnalité est fournie, save() mettra à jour l'instance. S'il n'est pas fourni, save() créera une nouvelle instance du modèle :

>>> 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()
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal