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

不言
Freigeben: 2019-03-13 13:23:17
nach vorne
2338 Leute haben es durchsucht

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'}),
        }
Nach dem Login kopieren

Klassen-Meta:

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

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()
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!