Добрый день Django Эксперты и энтузиасты!
У меня следующая ситуация (исходный код находится в конце этого поста):
У меня есть один шаблон, который используется DetailView для post модели (то есть show деталь конкретного экземпляра поста). В этом шаблоне у меня есть context_object_name post в шаблоне - у этого объекта есть идентификатор. В этом DetailView есть URL-ссылка на другой шаблон CreateView. Это представление создания для комментария модели. Между post и comment существует связь по внешнему ключу - один пост может содержать 0 - больше комментариев.
Когда я нажимаю на DetailView для post , у меня есть ссылка для CreateView для комментария. Когда пользователь пишет комментарий к сообщению и нажимает кнопку сохранения , мне нужно, чтобы post.id был доступен в шаблоне в шаблоне для CreateView (я хотел бы отправить его как скрытое поле в форме для комментария, чтобы что comment модель имеет post.id, доступный в методе save () - это покрывает необходимость использования внешнего ключа при сохранении comment ).
Теперь по существу моей проблемы:
Я хотел бы отправить post.id из шаблона DetailView в шаблон CreateView (чтобы я мог использовать его как скрытую форму). Проблема в том, что post.id не получен шаблоном для CreateView для комментариев. Исходный код, отвечающий моим потребностям, выглядит следующим образом:
Шаблон для DetailView (из post ), а именно URL-адрес, ссылающийся на CreateView (для comment ):
<a class="btn btn-danger" href="{% url 'commentpost' post_id=post.id %}">Reagovat</a>
Строка для уровня приложения urls.py, заботящаяся о commentpost
URL:
path('commentpost/<int:post_id>/',CommentPostView.as_view(),name='commentpost')
Я думал, что шаблон для URL поста комментария должен иметь доступное значение {{ post_id }}
... однако, чем пустое в шаблон поста комментария -> строка в шаблоне для поста комментария: <tr><td>ID:{{ post_id }}</td></tr>
.
CreateView для комментария:
class CommentPostView(CreateView):
model = Comment
context_object_name = 'comment'
form_class = NewCommentForm
template_name = 'new_comment.html'
Модель для комментария:
class Comment(models.Model):
post = models.ForeignKey(Post,on_delete=models.CASCADE)
author = models.CharField(max_length = 100, choices = DEPARTMENTS)
date_sent = models.DateTimeField()
text = models.TextField(max_length = 255)
В основном процесс должен быть следующим: 1) отправка шаблона DetailView post_id
-> 2) urls.py, заботящийся о значении post_id
- вызов правильного представления 3) просмотр рендеринга шаблона и получение шаблона post_id
ценность.
Я на 100% уверен, что значение post_id
на шаге 1) не пусто. URL для шага 1), т.е. DetailView выглядит следующим образом: http://192.168.56.101:8080/detailpost/1360
Кто-нибудь из вас имеет представление о том, что мне не хватает?
Большое спасибо заранее за любые предложения, берегите себя.