Обычно при создании формы для модели вы можете использовать ModelForm . Он придерживается принципа DRY, так что вам не нужно переопределять типы полей для класса формы. Он также автоматически обрабатывает проверку. Вы сохраняете полную гибкость для настройки используемых полей и виджетов. Используйте fields
для указания полей, которые вы хотите, или exclude
для указания полей, которые нужно игнорировать. С вашим примером:
from django import forms
from django.shortcuts import get_object_or_404
class ItemForm(forms.ModelForm):
class Meta:
model = Item
fields = ("name", )
def bound_form(request, id):
item = get_object_or_404(Item, id=id)
form = ItemForm(instance=item)
return render_to_response('bounded_form.html', {'form': form})
get_object_or_404()
полезен здесь как форма обработки ошибок. Использование Item.objects.get(id=id)
для отсутствующего идентификатора в противном случае вызовет необработанное исключение Item.DoesNotExist
. Конечно, вы можете использовать блок «попробуй / кроме».