У меня возникли проблемы с добавлением комментариев к взглядам на основе класса, forms.py:Django класс на основе просмотр и комментарии
class RequestForm(ModelForm):
class Meta:
model = Request
exclude = ('slug',)
class RequestCommentForm(ModelForm):
class Meta:
model = RequestComment
fields = ['body' ]
models.py:
class Request(models.Model):
title = models.CharField(max_length=250)
date = models.DateTimeField('Request date', default=timezone.now, editable=False)
department = models.CharField(max_length=2, choices=DEPARTMENT)
support_request = models.TextField('Request', max_length=2500, blank=True)
owner = models.ForeignKey(User,)
slug = models.SlugField(blank=True, editable=False)
def __unicode__(self):
return self.title
views.py:
class RequestDetailView(ModelFormMixin, DetailView):
model = Request
form_class = RequestCommentForm
def get_success_url(self):
return reverse('request-detail', kwargs={'pk': self.object.pk})
def get_context_data(self, **kwargs):
context = super(RequestDetailView, self).get_context_data(**kwargs)
context['form'] = self.get_form()
return context
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form = self.get_form()
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)
def form_valid(self, form):
form.instance.author = self.request.user
form.instance.request = Request.objects.get(pk=self.object.pk)
form.instance.created = timezone.now
form.save()
Also tried this part with:
self.object = form.save(commit=False)
self.object.author = self.request.user
self.object.request = Request.objects.get(pk=self.object.pk)
self.object.created = timezone.now
self.object.save()
return super(RequestDetailView, self).form_valid(form)
шаблон: request_detail.html комментарии раздел .....
{% load bootstrap %}
<form action="{% url 'request-detail' object.id %}" method="post"> {% csrf_token %}
<ul class="form-group">
{{ form|bootstrap }}
</ul>
<input class="btn btn-primary" type="submit" value="Submit" />
</form>
.....
страница не отображается правильно, но когда я представляю, не годна с сохранением комментария.
Панель инструментов Debug показывает, что запросы sql обновляют модель запроса вместо комментария комментария.
Невозможно выяснить, как добавить простую форму комментариев с разных моделей на страницу с деталями. Любая помощь будет оценена по достоинству.
Кроме того, если есть более элегантный способ добавления формы комментариев в классный взгляд, хотелось бы его увидеть. Мой google-fu не помог мне найти что-нибудь.
В коде: 'orm.instance.request = Request.objects.get (pk = self.object.pk) 'должно быть' form.instance.request = Request.objects.get (pk = self.object.pk) ' – Hybrid
Это просто скопировать-вставить и удалить прокомментированную ## опечатку. Исправлено в оригинальной записи. Не актуальная проблема ... – Max
Не удалось выяснить, как это сделать с CBV, сделало ее работой с легким представлением функций. – Max