Опираясь на то, что gruszczy said, если у вас есть модель с именем Author
вы можете объявить ModelForm
для этой модели, таким образом:
class AuthorForm(forms.ModelForm): # Note the different superclass.
class Meta:
model = Author
Если вы хотите форму, которая включает в себя всех атрибутов Author
то, что все вам нужно сделать. Однако, если вам нужно только подмножество атрибутов Author
(скажем name
и title
), то вы можете изменить форму модели, таким образом:
class AuthorForm(forms.ModelForm): # Note the different superclass.
class Meta:
model = Author
fields = ('name', 'title',)
Обратите внимание, что вы не должны использовать CharField
здесь.
Если с другой стороны, вы хотите все, кромеname
и title
, то вы можете определить форму, как это:
class AuthorForm(forms.ModelForm): # Note the different superclass.
class Meta:
model = Author
exclude = ('name', 'title',)
Update
(После прочтения комментария) Вы можете обращаться AuthorForm
any other regular form. По вашему мнению, вы можете создать эту форму с данными или без них на основе request.method
. Что-то вроде этого:
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.
И в шаблоне:
{{ form.as_p }}
Есть different ways для визуализации формы; as_p
является лишь одним из них.
-1 для того, чтобы не читать страницу документов, на которую вы действительно ссылаетесь. –