У меня есть FormView, который генерирует обзор объекта (с которым он в основном связан), а затем связывает его с объектом и сохраняет его, когда форма завершена.Persist Django FormView Data
Проблема, с которой я сталкиваюсь, заключается в том, что у меня нет возможности удержать данные объекта, к которому я хочу подключиться. Это означает, что мне нужно «искать его» для контекста (рендеринг шаблона) для правильной обработки (для создания ссылок) и для успеха (для создания соответствующего обратного URL-адреса.
Есть ли лучший способ привязки обзор для объекта? Или еще лучше, есть ли способ сохранить данные формы, которые мне не хватает?
EDIT: Извините, что дизайнер оформления был отправлен. Я удалил этот метод, потому что SO жаловался на слишком много кода и я не думал, что это было важно ... Я, должно быть, пропустил декоратор
class ReviewCreate(FormView):
template_name = 'food/item_add_review.html'
form_class = ReviewForm
review_item = None
def get_context_data(self, **kwargs):
context = super(ReviewCreate, self).get_context_data(**kwargs)
item_modelname = self.kwargs.get('model')
item_model = apps.get_model('food',item_modelname)
review_item = get_object_or_404(item_model,pk=self.kwargs.get('pk'))
context['item'] = review_item
return context
def form_valid(self, form):
item_modelname = self.kwargs.get('model')
item_model = apps.get_model('food',item_modelname)
review_item = get_object_or_404(item_model,pk=self.kwargs.get('pk'))
r = form.save(commit=False)
r.content_object=review_item
r.save()
return super(ReviewCreate, self).form_valid(form)
def get_success_url(self):
item_modelname = self.kwargs.get('model')
item_model = apps.get_model('food',item_modelname)
review_item = get_object_or_404(item_model,pk=self.kwargs.get('pk'))
return reverse('pkitem', kwargs = {'pk': review_item.id, 'model':item_modelname},)
Я попытаться изменить к себе. * В get_context_data бит переменные не торчат ... Хотя это более изящным есть и очевидная причина того, что не работает? – Ewanw
Если self.review_item не получил set, get_context_data поднимет AttributeError. Я бы дважды проверил шаблон. –