Скажем, у меня есть форма для добавления/редактирования продуктов (с полем «пользователь» является внешним ключом к моему пользователя), запускаемый из двух отдельных функций зрения - добавлять/редактировать:Джанго form.save шаг за шагом
def product_add(request):
userprofile = UserProfile.objects.get(user=request.user)
if request.method == 'POST':
form = ProductAddForm(request.POST, request.FILES,)
if form.is_valid():
form.save(user=request.user)
else:
form = ProductAddForm()
return render_to_response('products/product_add.html', {
'form':form, 'user':request.user,
}, context_instance=RequestContext(request))
def product_edit(request, id):
product = get_object_or_404(Product, id=id, user=request.user)
if product.user.id!=request.user.id:
raise Http404
if request.method == 'POST':
form = ProductAddForm(request.POST, request.FILES, instance=product)
if form.is_valid():
form.save(user=request.user)
else:
form = ProductAddForm(instance=product)
return render_to_response('products/product_edit.html', {
'form':form, 'user':request.user,
}, context_instance=RequestContext(request))
метод сохранения формы выглядит следующим образом:
def save(self, user, *args, **kwargs):
self.instance.user = user
post = super(ProductAddForm, self).save(*args, **kwargs)
post.save()
Может кто-нибудь сказать мне, что происходит в этой экономии шаг метода за шагом Почему мы называем супер в этой форме, и какова разница во всей обработке, когда мы редактировать и сохранять новый продукт, если вызов функции тот же?
Вы посмотрели на docs.python.org, чтобы узнать, что делает функция 'super'? http://docs.python.org/library/functions.html#super Что вы там узнали? –
Что вы подразумеваете под «редактированием»? Вы имеете в виду «валидацию»? Это отдельная особенность Формы. Или вы имеете в виду что-то еще? –
Под «2 взглядами» вы имеете в виду «две функции просмотра»? Если да, ОБРАТИТЕ ваш вопрос со всей этой информацией. Остановите добавление комментариев. Пожалуйста, ОБНОВЛЯЙТЕ вопрос, чтобы содержать ВСЕ факты. Затем удалите комментарии. –