Проблема с шаблоном в django TemplateView
У меня есть 4 типа билетов для отображения на моей приборной панели Открыт, принят, завершен и закрыт Я написал ниже шаблон представления для отображения всех контекстов в одном представлении, но если я нажимаю на эти опции на приборной панели, он отображает все статусы билетов во всех четырех, так как если я нажимаю на открытые билеты, он показывает все другие статусы вместе с открытыми билетами, и то же самое происходит для других типов билетов Изображение приборной панели
Это url открытого тикета, показывающий все статусы вместо только открытых тикетов
views.py
class DeveloperTicketView(TemplateView):
template_name = 'app/ticket_view.html'
def get_context_data(self, **kwargs):
context = super(DeveloperTicketView,self).get_context_data(**kwargs)
context['open_tickets'] = Ticket.objects.filter(status = 'Opened')
context['accepted_tickets'] = Ticket.objects.filter(status = 'Accepted',accepted_by = self.request.user)
context['completed_tickets'] = Ticket.objects.filter(status = 'Completed',accepted_by = self.request.user)
context['closed_tickets'] = Ticket.objects.filter(status = 'Closed',accepted_by = self.request.user)
return context
Ticket_view.html
{% extends 'app/base.html' %}
{% block body %}
<table class="table table-bordered">
<thead>
<tr>
<th>ID</th>
<th>Status</th>
<th>Created</th>
<th>Title</th>
<th>Description</th>
</tr>
</thead>
<tbody>
{% for ticket in open_tickets %}
<tr>
<td><a href="">{{ ticket.id }}</a></td>
<td>{{ ticket.status }}</td>
<td>{{ ticket.created_by }}</td>
<td>{{ ticket.ticket_title }}</td>
<td>{{ ticket.ticket_description }}</td>
<td><a href="{% url 'accept_tickets' pk=ticket.id %}">Accept</a></td>
</tr>
{% endfor %}
{% for ticket in accepted_tickets %}
<tr>
<td><a href="">{{ ticket.id }}</a></td>
<td>{{ ticket.status }}</td>
<td>{{ ticket.created_by }}</td>
<td>{{ ticket.ticket_title }}</td>
<td>{{ ticket.ticket_description }}</td>
<td><a href="{% url 'mark_complete' pk=ticket.id %}">Complete</a></td>
</tr>
{% endfor %}
{% for ticket in completed_tickets %}ticket.status
<tr>
<td><a href="">{{ ticket.id }}</a></td>
<td>{{ ticket.status }}</td>
<td>{{ ticket.created_by }}</td>
<td>{{ ticket.ticket_title }}</td>
<td>{{ ticket.ticket_description }}</td>
</tr>
{% endfor %}
{% for ticket in closed_tickets %}
<tr>
<td><a href="">{{ ticket.id }}</a></td>
<td>{{ ticket.status }}</td>
<td>{{ ticket.created_by }}</td>
<td>{{ ticket.ticket_title }}</td>
<td>{{ ticket.ticket_description }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
models.py
class Ticket(models.Model):
ticket_title = models.CharField(max_length=200)
ticket_description = models.TextField()
created_by = models.ForeignKey(User,related_name = 'created_by',blank=True,null=True,on_delete=models.CASCADE)
STATUS_CHOICES = (
('Opened','Opened'),
('Accepted','Accepted'),
('Completed','Completed'),
('Closed','Closed')
)
status = models.CharField('Status',choices=STATUS_CHOICES,max_length = 100,default = 'Opened')
closed_date = models.DateTimeField(blank=True,null=True)
completed_date = models.DateTimeField(blank=True,null=True)
accepted_date = models.DateTimeField(blank=True,null=True)
opened_date = models.DateTimeField(blank=True,null=True)
accepted_by = models.ForeignKey(User,related_name='assigned_to',on_delete=models.CASCADE,blank=True,null=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return self.ticket_title
Вместо "Ticket" попробуйте использовать "self":
views.py
context['open_tickets'] = self.objects.filter(status = 'Opened')
context['accepted_tickets'] = self.objects.filter(status = 'Accepted',accepted_by = self.request.user)
context['completed_tickets'] = self.objects.filter(status = 'Completed',accepted_by = self.request.user)
context['closed_tickets'] = self.objects.filter(status = 'Closed',accepted_by = self.request.user)