Это можно сделать в форме. Да и то, саму логику стоит писать во view. Сначала передать форме аргумент, который определяет, делать ли поля disabled. А затем, уже в форме, проставлять атрибуты полям.
class MyView(...):
form_class = MyForm
def get_form_kwargs(self, ...): # название метода условно, не уверен, что он так называется в generic views и даже что он есть :)
kwargs = super(MyView, self).get_form_kwargs(...)
kwargs.update({'disabled': not self.request.user.has_perm(...)})
return kwargs
class MyForm(...):
def __init__(self, *args, **kwargs):
is_disabled = kwargs.pop('disabled')
super(MyForm, self).__init__(*args, **kwargs)
if is_disabled:
self.fields['foo'].widget.attrs.update({'disabled': 'disabled'})