Hi,
In general you shouldn't be even trying to do this in admin since it's
not designed for this kind of functionality.
Admin is just a datacentric tool to view your data. It's never been
meant to help implementing any businesslogic. And basically you only
should let people in admin that you trust full 100%.
If you can't trust them (which is indicated by "readonly field"
requirement) you should do custom view and templates for that. Generic
class based views can greatly help you to achieve it, and most probably
with really less effort than trying to do that in admin.
--
Jani Tiainen