Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die ModelForm-Komponente in Django (Codebeispiel)

Einführung in die ModelForm-Komponente in Django (Codebeispiel)

不言
不言nach vorne
2019-03-13 13:23:172356Durchsuche

Dieser Artikel bietet Ihnen eine Einführung in die ModelForm-Komponente (Codebeispiele). Ich hoffe, dass er Ihnen weiterhilft .

Normalerweise handelt es sich bei den meisten von dem, was wir schreiben, in Django-Projekten um Formen, die den Modellen von Django sehr nahe kommen. Beispielsweise verfügen Sie möglicherweise über ein Buchmodell und möchten ein Formular erstellen, um Buchinformationen zum Modell hinzuzufügen und zu bearbeiten. In diesem Fall ist die Definition von Feldern im Formular überflüssig, da wir diese Felder bereits im Modell definiert haben.

Aus diesem Grund stellt Django eine Hilfsklasse bereit, die es uns ermöglicht, ein Formular aus Djangos Modell zu erstellen, nämlich ModelForm.

ModelForm-Definition

Die Kombination von Form und Modell. Häufig verwendete Parameter unter

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'}),
        }

Klassen-Meta:

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

ModelForm-Validierung

Ähnlich wie der normale Form-Formularvalidierungstyp erfordert die ModelForm-Formularvalidierung den Aufruf von is_valid() oder den Zugriff auf Fehler implizit bei der Nutzung einer Eigenschaft.

Wir können lokale Hook-Methoden und globale Hook-Methoden anpassen, um benutzerdefinierte Überprüfungsregeln zu implementieren, genau wie bei der Verwendung der Form-Klasse.

Wenn wir bestimmte Felder nicht überschreiben und das Validator-Attribut festlegen, wird ModelForm anhand der Validatoren der Felder im Modell überprüft.

save()-Methode

Jede ModelForm verfügt auch über eine save()-Methode. Diese Methode erstellt und speichert ein Datenbankobjekt basierend auf den an das Formular gebundenen Daten. Unterklassen von ModelForm können eine vorhandene Modellinstanz als Schlüsselwortargumentinstanz akzeptieren; wenn diese Funktionalität bereitgestellt wird, aktualisiert save() die Instanz. Wenn nicht angegeben, erstellt save() eine neue Instanz des Modells:

>>> 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()

Das obige ist der detaillierte Inhalt vonEinführung in die ModelForm-Komponente in Django (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen