편집 할 때마다 장고 (django) 형식의 읽기 전용 필드가 있습니다.
올바른 권한을 가진 올바른 사용자 만 필드를 편집하고 싶습니다. 대부분의 경우 필드는 잠겨 있지만 관리자가 편집 할 수 있습니다.django 폼에서 선택적으로 읽기 전용 필드를 만드는 방법은 무엇입니까?
기능을 사용하면 필드를 읽기 전용으로 만들 수 있지만 읽기 전용으로 설정할 수는 없습니다. 또한 StudentForm에 선택적 인수를 전달하려고 시도했습니다. 초기화했지만 예상보다 훨씬 어려워졌습니다.
이 작업을 수행하는 적절한 방법이 있습니까?
models.py
class Student():
# is already assigned, but needs to be unique
# only privelidged user should change.
student_id = models.CharField(max_length=20, primary_key=True)
last_name = models.CharField(max_length=30)
first_name = models.CharField(max_length=30)
# ... other fields ...
forms.py
class StudentForm(forms.ModelForm):
class Meta:
model = Student
fields = ('student_id', 'last_name', 'first_name',
# ... other fields ...
def __init__(self, *args, **kwargs):
super(StudentForm, self).__init__(*args, **kwargs)
instance = getattr(self, 'instance', None)
if instance:
self.fields['student_id'].widget.attrs['readonly'] = True
views.py
def new_student_view(request):
form = StudentForm()
# Test for user privelige, and disable
form.fields['student_id'].widget.attrs['readonly'] = False
c = {'form':form}
return render_to_response('app/edit_student.html', c, context_instance=RequestContext(request))