Измените представления, основанные на функциях, на общие представления, основанные на классах (обновление представления)

Мне нужно изменить представления на основе функций на общие представления на основе классов У меня есть 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})
Вернуться на верх