Как включить URL-адрес другого приложения в get_absolute_url: reverse () django? - PullRequest
0 голосов
/ 12 ноября 2019

В приложении models.py я использую get_absolute_url для обращения к определенному пути, используя «имя», которое находится в другом приложении urls.py.

Но, конечно, я получаю ошибку, потому что яЯ не создал urls.py для этого приложения, так как urlpattern уже присутствует в некоторых других urls.py.

Так есть ли какие-либо функции типа include (app.urls), которые я могу использовать в обратном порядке?

#app: A - urls.py
urlpatterns = [
path('post/<int:pk>/', PostDetailView.as_view(), name = 'post-detail'),
...
]

#app: B - models.py
def get_absolute_url(self):
    return reverse('post-detail',kwargs = {'post_id.id':self.post_id.id})

1 Ответ

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

в вашем основном файле urls.py вы должны добавить все URL вашего приложения следующим образом и вызвать его в вашем методе get absolute. Вы определяете этот метод только для этой конкретной модели, и он связан с экземпляром самостоятельно.

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('your_app.urls')),
]

Также вы можете изменить свой абсолютный метод get как

def get_absolute_url(self):
    return reverse('post-detail',kwargs = {"pk": self.pk)
...