Django UpdateView устанавливает поле только для чтения по разрешению пользователя

Я видел некоторые сообщения типа Создание полей формы - только для чтения или отключенных в DJANGO updateView использование пользовательской формы в UpdateView для создания некоторых полей как полей только для чтения. Однако объект формы недоступен для объекта request.user. Если я хочу сделать некоторые поля доступными только для чтения для некоторой группы пользователей, есть ли способ сделать это в UpdateView?

У меня такой же вопрос и найдите следующее решение. Я использую Django 4.2 и не знаю, подходит ли это решение для более старой версии.

В моем проекте используются UpdateView и представления на основе классов. Поэтому для моего представления было ограничено количество отображаемых полей. После этого я могу изменить только это поле, но я обнаружил, что все еще могу использовать ссылки на параметры объекта из модели.

view.py:

class UpdateEventView(UpdateView):
    model = Events
    fields = ['user']
    template_name = 'update-event.html'
    success_url = reverse_lazy('app:events')
    
    @method_decorator(user_passes_test(lambda user: user.is_superuser, login_url='/'))
    def dispatch(self, request, *args, **kwargs):
        return super(UpdateEventView, self).dispatch(request, *args, **kwargs)

и шаблонная часть:

<h1 class="page__data">Update event for: {{ events.event_date }}</h1>
<div class="page__text">
    <form class="form" method="POST" action="{% url 'app:edit' events.uuid %}">
        {% csrf_token %}
        {{ form }}
        <input class="submit" type="submit" value="Save">
    </form>
</div>

В результате пользователь может видеть дату события на странице, но не может ее изменить. Возможно, это может решить ваш вопрос. Просто попробуйте сделать другой вид для пользователя с ограниченным доступом. Ну... "Просто" :)

Вернуться на верх