Попытка создать отдельное приложение комментариев для проекта билетов с использованием общих представлений на основе классов django

Я пытаюсь создать отдельное приложение для комментариев из моего приложения для билетов. Я полагаю, что я получил большую часть функциональности, потому что когда я использую фронтенд, comments отображается на моем административном сайте, но он не связан с соответствующим ticket. Вместо этого происходит то, что comment создает свою собственную новую страницу tickets. Как мне соединить comment с ticket, хотя они находятся в отдельных приложениях? Я полагаю, что проблема кроется в моих файлах urls.py и в том, как я их реализовал, но это также может быть проблема с моими моделями или представлениями, которые я не вижу.

Вот что у меня есть на данный момент

tickets urls.py

urlpatterns = [
    path('', TicketListView.as_view(), name='ticket-home'),
    path('user/<str:username>', UserTicketListView.as_view(), name='user-tickets'),
    path('tickets/<int:pk>/', TicketDetailView.as_view(), name='ticket-detail'),
    path('tickets/new/', TicketCreateView.as_view(), name='ticket-create'),
    path('tickets/<int:pk>/update/', TicketUpdateView.as_view(), name='ticket-update'),
    path('tickets/<int:pk>/delete/', TicketDeleteView.as_view(), name='ticket-delete'),
    path('about/', views.about, name='tickets-about'),
]

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

urlpatterns = [
    path('<int:pk>/', CommentListView.as_view(), name='comment-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'),
]

ticket 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})

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

class Comment(models.Model):
    ticket = models.ForeignKey(Ticket, related_name='comments', on_delete=models.CASCADE)
    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.pk})

Подозреваемые ошибочные взгляды

class CommentListView(ListView):
    model = Comment
    template_name = 'tickets/ticket_detail.html'
    context_object_name = 'comments'
    ordering = ['-date_posted']
    paginate_by = 5
    
    def get_queryset(self, *args, **kwargs):
        ticket = self.kwargs['comments']
        return Comment.objects.filter(ticket=ticket).order_by(self.ordering)
class TicketDetailView(DetailView):
    model = Ticket
    
    def get_queryset(self):
        user = get_object_or_404(User, username=self.kwargs.get('username'))
        return Comment.objects.filter(author=user).order_by('-date_posted')
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['comments'] = context['comments'].filter(author=self.request.user)
        return context
Вернуться на верх