Modellformer¶
ModelForm API-referens. För introduktionsmaterial om hur man använder en ModelForm, se ämnesguiden Skapa formulär från modeller.
Modellformulär Meta API¶
API:et _meta används för att skapa formulär som återspeglar en Django-modell. Det är tillgängligt via attributet _meta i varje modellformulär och är en instans av django.forms.models.ModelFormOptions.
Strukturen på det genererade formuläret kan anpassas genom att definiera metadataalternativ som attribut för en inre Meta-klass. Till exempel:
from django.forms import ModelForm
from myapp.models import Book
class BookForm(ModelForm):
class Meta:
model = Book
fields = ["title", "author"]
help_texts = {
"title": "The title of the book",
"author": "The author of the book",
}
# ... other attributes
Obligatoriska attribut är model och antingen fields eller exclude. Alla andra Meta-attribut är valfria.
Valfria attribut, förutom localized_fields och formfield_callback, förväntar sig en ordbok som mappar ett modellfältnamn till ett värde. Alla fält som inte definieras i ordboken faller tillbaka till fältets standardvärde.
Ogiltiga fältnamn
Ogiltiga eller uteslutna fältnamn i ett valfritt ordboksattribut har ingen effekt, eftersom fält som inte ingår inte används.
Felmeddelanden¶
- ModelFormOptions.error_messages¶
En ordlista som kopplar ett modellfältnamn till en ordlista med felmeddelandenycklar (
null,blank,invalid,unique, etc.) som kopplas till anpassade felmeddelanden.När ett fält inte anges kommer Django att använda felmeddelandena som definierats i det modellfältets
django.db.models.Field.error_messagesoch slutligen standardfelmeddelandena för den fälttypen.
exclude¶
- ModelFormOptions.exclude¶
En tupel eller lista med
modelfältnamn som ska uteslutas från formuläret.Antingen
fieldsellerexcludemåste vara inställt. Om inget av dessa är inställt kommer ettImproperlyConfigured-undantag att genereras. Omexcludeär inställt ochfieldsinte är inställt, inkluderas alla modellfält, förutom de som anges iexclude, i formuläret.
field_classes¶
- ModelFormOptions.field_classes¶
En ordlista som mappar ett modellfältnamn till en
Field-klass, som åsidosätterform_classsom används i modellfältetsField.formfield()-metod.När ett fält inte anges kommer Django att använda modellfältets standardfältklass.
fält¶
- ModelFormOptions.fields¶
En tupel eller lista med
modelfältnamn som ska inkluderas i formuläret. Värdet’__all__’kan användas för att ange att alla fält ska inkluderas.Om något fält anges i
excludekommer detta inte att inkluderas i formuläret trots att det anges ifields.Antingen
fieldsellerexcludemåste anges. Om ingen av dem anges kommer ettImproperlyConfigured-undantag att genereras.
formfield_callback¶
- ModelFormOptions.formfield_callback¶
En funktion eller anropbar som tar ett modellfält och returnerar ett
django.forms.Field-objekt.
help_texts¶
labels¶
- ModelFormOptions.labels¶
En ordlista som mappar modellfältnamn till en etikettsträng.
När ett fält inte anges kommer Django att använda modellfältets
verbose_nameoch sedan fältets attributnamn.
localized_fields¶
- ModelFormOptions.localized_fields¶
En tupel eller lista med
modelfältnamn som ska lokaliseras. Värdet’__all__’kan användas för att ange att alla fält ska lokaliseras.Som standard är formulärfält inte lokaliserade. Se aktivera lokalisering av fält för mer information.
modell¶
- ModelFormOptions.model¶
Obligatoriskt. Klassen
django.db.models.Modelsom ska användas förModelForm.
widgets¶
- ModelFormOptions.widgets¶
En ordlista som mappar ett modellfältnamn till en
django.forms.Widget.När ett fält inte anges kommer Django att använda standardwidgetaren för den specifika typen av
django.db.models.Field.
Funktioner för modellformfabrik¶
modellform_fabrik¶
- modelform_factory(model, form=ModelForm, fields=None, exclude=None, formfield_callback=None, widgets=None, localized_fields=None, labels=None, help_texts=None, error_messages=None, field_classes=None)[source]¶
Returnerar en
ModelForm-klass för den angivnamodellen. Du kan valfritt skicka ettform-argument som ska användas som utgångspunkt för att konstrueraModelForm.fieldsär en valfri lista med fältnamn. Om den anges kommer endast de namngivna fälten att ingå i de returnerade fälten.excludeär en valfri lista med fältnamn. Om den anges kommer de angivna fälten att uteslutas från de returnerade fälten, även om de finns listade i argumentetfields.formfield_callbackär en callable som tar ett modellfält och returnerar ett formulärfält.widgetsär en ordbok med namn på modellfält som mappas till en widget.localized_fieldsär en lista med namn på fält som ska lokaliseras.labelsär en ordbok med namn på modellfält som mappas till en etikett.help_textsär en ordbok med namn på modellfält som mappats till en hjälptext.error_messagesär en ordbok med namn på modellfält som mappas till en ordbok med felmeddelanden.field_classesär en ordbok med namn på modellfält som mappas till en formulärfältklass.Se ModelForm fabriksfunktion för exempel på användning.
Du måste ange listan med fält explicit, antingen via nyckelordsargumenten
fieldsellerexclude, eller motsvarande attribut på formulärets inreMeta-klass. Se Välja de fält som ska användas för mer information. Om du utelämnar någon definition av de fält som ska användas kommer det att resultera i ettImproperlyConfiguredundantag.
modellformset_factory¶
- modelformset_factory(model, form=ModelForm, formfield_callback=None, formset=BaseModelFormSet, extra=1, can_delete=False, can_order=False, max_num=None, fields=None, exclude=None, widgets=None, validate_max=False, localized_fields=None, labels=None, help_texts=None, error_messages=None, min_num=None, validate_min=False, field_classes=None, absolute_max=None, can_delete_extra=True, renderer=None, edit_only=False)[source]¶
Returnerar en
FormSet-klass för den angivnamodel-klassen.Argumenten
model,form,fields,exclude,formfield_callback,widgets,localized_fields,labels,help_texts,error_messagesochfield_classesskickas alla tillmodelform_factory().Argumenten
formset,extra,can_delete,can_order,max_num,validate_max,min_num,validate_min,absolute_max,can_delete_extraochrendererskickas tillformset_factory(). Se formsets för mer information.Argumentet
edit_onlygör det möjligt att förhindra att nya objekt skapas.Se Modellformsatser för exempel på användning.
inlineformset_factory¶
- inlineformset_factory(parent_model, model, form=ModelForm, formset=BaseInlineFormSet, fk_name=None, fields=None, exclude=None, extra=3, can_order=False, can_delete=True, max_num=None, formfield_callback=None, widgets=None, validate_max=False, localized_fields=None, labels=None, help_texts=None, error_messages=None, min_num=None, validate_min=False, field_classes=None, absolute_max=None, can_delete_extra=True, renderer=None, edit_only=False)[source]¶
Returnerar ett
InlineFormSetmed hjälp avmodelformset_factory()med standardvärdenaformset=BaseInlineFormSet,can_delete=Trueochextra=3.Om din modell har mer än en
ForeignKeytillparent_model, måste du ange ettfk_name.Se Inline-formulär för exempel på användning.