Я понятия не имею, и мне нужно спросить вашего совета.Как правильно определить начальные значения для ModelForm?
У меня есть простой вид:
class CommentForm(ModelForm):
class Meta:
model = Comment
fields = ['text','author','news']
Я хочу, чтобы добавить форму в DetailView и hadle эту форму там:
class NewsDetailView(DetailView):
model = News
template_name = 'news/detail.html'
def get_initial(self):
return {'news': self.get_object(), 'author': self.request.user}
def get_context_data(self, **kwargs):
context = super(NewsDetailView, self).get_context_data(**kwargs)
context['form'] = CommentForm(initial=self.get_initial())
return context
def post(self, request, *args, **kwargs):
'''
comment_form = CommentForm(request.POST)
if comment_form.is_valid():
comment_form.save()
Я не хочу, чтобы показать 'автора' и новости fieds. Но если я прячу их, я не могу получить начальные значения ..
ОБНОВЛЕНО:
После проверки формы мне нужно возвращать текущий экземпляр формы в шаблоне путем обновления страницы. Я попытался следующее:
comment_form = CommentForm(request.POST, request=request)
if comment_form.is_valid() and comment_form.validate_user():
comment_form.save()
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
else:
context = super(NewsDetailView,self).get_context_data(**kwargs)
context['form'] = comment_form
return self.render_to_response(context)
Но не работал.
Как ты скрываешь их? –
Я пробовал их не показывать. Просто использовал {{form.text}} в шаблоне. –
Вы можете показать их в своем шаблоне, если у вас есть 'HiddenInput' –