Просто заметьте: если ваша форма вызывается из класса ModelAdmin, просто создайте метод get_form для ModelAdmin:
def get_form(self, request, obj=None, **kwargs):
exclude = ()
if not request.user.is_superuser:
exclude += ('field1',)
if obj:
exclude += ('field2',)
self.exclude = exclude
return super(ProfessorAdmin, self).get_form(request, obj, **kwargs)
PS: сменить ProfessorAdmin методом класса «владелец».