Измените представления, основанные на функциях, на общие представления, основанные на классах (обновление представления)
Мне нужно изменить представления на основе функций на общие представления на основе классов У меня есть html страница, которая отображает статус билета и информацию вместе с кнопкой изображение билета с кнопкой принять если я нажимаю на кнопку принять, она переходит в нижеприведенное представление на основе функций (accept_ticket_view()) Мне нужно, чтобы представление на основе функций было написано в cbv (updateview).
model.py
class Ticket(models.Model):
ticket_title = models.CharField(unique=True,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,blank=True,null=True)
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)
openticket.html
<thead>
<tr>
<th>ID</th>
<th>Status</th>
<th>Created</th>
<th>Title</th>
<th>Description</th>
</tr>
</thead>
<tbody>
{% for ticket in 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>
views.py
@login_required
def open_tickets_view(request):
tickets_open = Ticket.objects.filter(status = 'Opened')
return render(request,'app/open_tickets.html',{"tickets": tickets_open})
@login_required
def accept_tickets_view(request,pk):
ticket = get_object_or_404(Ticket,id=pk)
if ticket.status == 'Opened':
ticket.status = 'Accepted'
ticket.accepted_date = datetime.datetime.now()
ticket.accepted_by = request.user
ticket.save()
return redirect(reverse('open_tickets'))
@login_required
def dev_accepted_ticket(request):
ticket_complete = Ticket.objects.filter(status = 'Accepted',accepted_by = request.user)
return render(request,'app/dev_accepted_ticket.html',{"tickets": ticket_complete})
@login_required
def mark_complete_tickets_view(request,pk):
ticket = get_object_or_404(Ticket,id=pk)
if ticket.status == 'Accepted' and ticket.accepted_by == request.user:
ticket.status = 'Completed'
ticket.completed_date = datetime.datetime.now()
ticket.save()
return redirect(reverse('accepted_tickets_view'))
@login_required
def dev_completed_ticket(request):
tickets_completed = Ticket.objects.filter(status = 'Completed',accepted_by = request.user)
return render(request,'app/dev_complete_ticket.html',{'tickets':tickets_completed})