bâtiment sur ce gruszczy said si vous avez un modèle nommé Author
vous pouvez déclarer une ModelForm
pour ce modèle ainsi:
class AuthorForm(forms.ModelForm): # Note the different superclass.
class Meta:
model = Author
Si vous voulez un formulaire qui inclut tous attributs de Author
alors c'est tout Tu as besoin de faire. Si toutefois vous avez seulement besoin d'un sous-ensemble d'attributs de Author
(par exemple name
et title
), vous pouvez modifier le modèle de formulaire ainsi:
class AuthorForm(forms.ModelForm): # Note the different superclass.
class Meta:
model = Author
fields = ('name', 'title',)
Notez que vous ne devez pas utiliser CharField
ici.
Si d'autre part vous voulez tout saufname
et title
, vous pouvez définir votre formulaire comme ceci:
class AuthorForm(forms.ModelForm): # Note the different superclass.
class Meta:
model = Author
exclude = ('name', 'title',)
Mise à jour
(Après avoir lu un commentaire) Vous pouvez traiter AuthorForm
comme any other regular form. À votre avis, vous pouvez instancier ce formulaire avec ou sans données basées sur le request.method
. Quelque chose comme ceci:
def add_author(request, *args, **kwargs):
if request.method == 'GET':
form = AuthorForm()
elif request.method == 'POST':
form = AuthorForm(request.POST.copy())
if form.is_valid():
author = form.save()
# Redirect to listing etc.
context = dict(form = form)
return render_to_response(template_name, context) # etc.
Et dans votre modèle:
{{ form.as_p }}
Il y a different ways de rendre une forme; as_p
n'en est qu'une.
-1 pour ne pas lire la page de document à laquelle vous êtes réellement lié. –