Django - Как вызвать Detailview в качестве альтернативы UpdateView на основе аутентификации пользователя и pk
Мне нужно, чтобы пользователь2 (без авторизации) видел DetailView вместо UpdateView (который может видеть пользователь1) в качестве альтернативного представления в общем ListView, вызывая соответствующую страницу с объектом PK(title).
Кто-нибудь знает, что является лучшей практикой для достижения этого или где/что я должен искать, чтобы достичь своей цели?
Заранее спасибо!
Details: Не могу понять как это сделать и правильно вызвать Detailview. Я уже создал и UpdateView и DetailView и все что нужно, но мне приходится вызывать их оба из object pk и это не работает.
HTML
{% extends 'base/mybase2.html' %}
{% load static %}
{% block content %}
<h1> List</h1>
<a class="btn btn-outline-info " href="{% url 'home' %}">Back to homepage</a>
<a class="btn btn-sm btn-outline-primary" href="{% url 'a_add' %}">Add</a>
<hr>
{{ myFilter.form }}
<hr>
<ul>
<table class="table table-hover table-light table-striped">
<thead>
<tr><th scope="col">#Title</th>...</tr>
</thead>
<tbody>
<tr>
<caption>Total number of selected objects: {{ page_obj.paginator.count }}</caption>
{% for object in object_list %}
{% if perms.varmodel.change_atitle %}
<th scope="row"><a href="{{ object.get_absolute_url }}">{{ varmodel.a_number }}</a></th>
{% else %}
<th scope="row"><a href=#>{{ varmodel.a_description }}</a></th>
{% endif %}
<td>
{{ ... }}
</td>
УРЛЫ
from django.urls import path
from varapp.views import AListView
from varapp.views import ACreateView, AUpdateView
from varapp.views import ADetailView
urlpatterns = [
path('', AListView.as_view(), name='a_list'),
path('add/', ACreateView.as_view(), name='a_add'),
path('update/<str:pk>/', AUpdateView.as_view(), name='a_update'),
path('detail/<str:pk>/', ADetailView.as_view(), name='a_detail'),
]
ПРОСМОТРОВ
*Various imports
class AUpdateView(LoginRequiredMixin, PermissionRequiredMixin, UpdateView):
permission_required = 'aapp.change_a'
model = A
form_class = AForm
success_url = reverse_lazy('a_list')
def form_valid(self, form):
form.instance.air_modifier = self.request.user
return super().form_valid(form)
class ADetailView(LoginRequiredMixin, PermissionRequiredMixin, DetailView):
permission_required = 'aapp.view_a'
model = A
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
return context