Создание отдельного приложения комментариев для приложения билетов django

Пытаюсь создать отдельное приложение для комментариев с использованием представлений на основе классов для проекта тикетов. Я думаю, что проблема кроется в моем comments' models.py или его файле urls.py, но я не знаю, как действовать дальше. Вот ошибка, которую я получаю, а также код и трассировка.

Traceback

комментировать models.py

class Comment(models.Model):
    ticket = models.ForeignKey(Ticket, related_name='comments', on_delete=models.CASCADE, null=True)
    title = models.CharField(max_length=20)
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    
    class Meta:
        ordering = ['date_posted']
    
    def __str__(self):
        return self.content[:50]
    
    def get_absolute_url(self):
        return reverse('tickets:ticket-detail', kwargs={'pk': self.ticket_id})

комментировать urls.py

urlpatterns = [
    path('tickets/<int:pk>/', CommentListView.as_view(), name='ticket-detail'),
    path('tickets/<int:pk>/comments/new/', CommentCreateView.as_view(), name='comment-create'),
    path('tickets/comments/<int:pk>/update/', CommentUpdateView.as_view(), name='comment-update'),
    path('tickets/comments/<int:pk>/delete/', CommentDeleteView.as_view(), name='comment-delete'),
]

tickets models.py

class Ticket(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    assignee = models.ForeignKey(Profile, on_delete=models.SET_NULL, blank=True, null=True)
    status = models.BooleanField(choices=MARKED, default=True)
    priority = models.TextField(choices=PRIORITIES, default='None', max_length=10)
    label = models.CharField(choices=TYPES, default='Misc', max_length=100)
    
    
    def __str__(self):
        return self.title
    
    def get_absolute_url(self):
        return reverse('ticket-detail', kwargs={'pk': self.pk})
    

Поскольку путь tickets/ был настроен на включение урлов приложения tickets, урлы приложения comments не будут достигнуты (поскольку урлы приложения comments будут направлены на урлы приложения tickets). Например, путь tickets/1/ приводит к конфликту: должен ли Django показывать детали тикета или список комментариев?

Самый простой способ решить эту проблему, избегая при этом сильного изменения кода, - отредактировать корневой urls.py файл вашего проекта:

from django.urls import path, include

urlpatterns = [
    # Other urls
    path('tickets/', include('tickets.urls'), name='tickets'),
    path('comments/', include('comments.urls'), name='comments')
]

Единственная разница в том, что теперь для вызова представления из приложения comments нужно добавить 'comments' в начало пути, например:

comments/tickets/2/
comments/tickets/2/comments/new/
comments/tickets/comments/3/update/
comments/tickets/comments/3/delete/
Вернуться на верх