Итак, я нахожусь в процессе создания специального приложения для комментариев для Django == 2.1 И я хотел бы знать, как загрузить как существующую запись в блоге, так и форму комментария, в которой ContentType будет храниться как блог вместо одного.из других моделей, с которыми это может быть связано.
Порядок разрешения методов требует, чтобы крайний левый просмотр или миксин были первыми, в которых выполняется поиск отсутствующих методов, не объявленных в этом соответствующем представлении, или тех представлений, которые вызывают метод super().get()
(пример формы),Поэтому я пришел к выводу, что приложение View for Blog должно иметь следующий код.
blog/views.py
class BLogTechObjectView(SingleObjectMixin, TemplateResponseMixin, BlogTechView):
model = Blog
slug_url_kwarg = 'blogtitle'
template_name = 'extendsBlog.html'
context_object_name = 'blog'
slug_field = 'blog_name'
def get(self, request, *args, **kwargs):
blog = self.get_object()
return render(request, 'extendsBlog.html', {'blog':blog})
comments/models.py
class Comment(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
timestamp = models.DateTimeField(auto_now_add=True)
content = models.TextField()
def __str__(self):
return '{} made this comment on : {} '.format(self.user, self.timestamp)
def __unicode__(self):
return '{} made this comment on : {} '.format(self.user, self.timestamp)
comments/views.py
class CommentFormView(generic.CreateView):
form_class = CommentForm
success_url = None
template_name = 'comments.html'
def post(self):
comments/forms.py
class CommentForm(forms.Form):
content_type = forms.CharField(widget=forms.HiddenInput)
object_id = forms.IntegerField(widget=forms.HiddenInput)
content = forms.CharField(widget=forms.Textarea)
Файл blog / views.py сокращен для краткости.Вот весь файл.http://dpaste.com/2Y4D355
Вот логика.Я подумал, что, пока я могу загружать данные формы в блоге / views.py, я могу затем публиковать данные формы в соответствующий файл comment / urls.py, где будет загружено представление и форма будет сохранена.Но я еще не закончил файл comment / views.py, потому что хотел узнать от разработчиков, правильно ли использовать логический подход.Пожалуйста, также прокомментируйте некоторую справочную информацию вместе с вашими ответами, поскольку она очень поможет мне и тем, кто использует представления на основе классов вместо представлений на основе функций, и поможет исправить дальнейшие логические ошибки (если применимо) в будущем.Спасибо.И, пожалуйста, прокомментируйте, если этот вопрос необходимо обновить.