Django: Как получить доступ к первичному ключу другой модели в urlpatterns? - PullRequest
0 голосов
/ 10 ноября 2019

Я получаю NoReverseMatch при маршрутизации по определенному пути.

Невозможно найти первичный ключ <int:pk> только для одного urlpattern при получении результатов для всех других аналогичных путей.

Я предполагаю, что эта ошибка вызвана тем, чтомодель здесь другая, например,

Не получено сообщение об ошибке:

class PostUpdateView():
   model = A

, а полученная ошибка:

class AddCommentView():
   model = B
urlpatterns = [
    path('post/<int:pk>/update/', PostUpdateView.as_view(), name = 'post-update'),
    path('post/<int:pk>/comment', AddCommentView.as_view(), name = 'post-comment')]

Обаклассы находятся в одном и том же views.py файле, потому что мне нужен первичный ключ модели А. в моем URL-адресе маршрутизации, чтобы я мог вернуться к исходной странице.

Ошибка:

Reverse for 'post-comment' with no arguments not found. 1 pattern(s) tried: ['post/(?P<pk>[0-9]+)/comment$']

Как правильно включить ключи обеих моделей в один и тот же маршрут?

Примечание. Первичный ключ A присутствует в B как внешний ключ.

1 Ответ

0 голосов
/ 10 ноября 2019

Метод get_absolute_url должен выглядеть следующим образом: аргумент kwargs.

from django.urls import reverse

class AddCommentView():
   model = B

   def get_absolute_url(self):
       return reverse('post-comment', kwargs={'pk': self.pk})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...