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