Something I've worked out about Django's admin interface
January 20, 2011
I'm not very far along in my adventures with Django so far (which means that I spend a lot of time trying to make Django do things in wrong and non-Django ways), but I've played around enough with Django's admin interface to have worked out one important thing: I could fritter away endless amounts of time fine-tuning it to get everything just right.
I'm the kind of person who already fiddles endlessly with the fine details of the output formats of my programs; Django's admin interface raises this to new and exciting levels, since it's not just the output that I'm fiddling with. In some ways it's a close cousin to a Turing tar pit, in that the admin interface is not a general purpose environment so its limitations and features present you with the puzzle of how you can contort it into doing what you want, especially when what you want seems so simple and easy to describe.
(Sure, you could go in with chainsaw of general Python code, but this is sort of like the various '<whatever> golf' hacker games; half the challenge is to achieve your goal in the shortest and simplest way possible.)
In some Django applications the admin interface matters, but not in this one, at least not as I'm currently designing it. Although it's superficially tempting to have sponsors use the admin interface to approve pending account requests (and maybe to create new ones), it feels like the wrong way to do it and a bad fit. There are all sorts of aspects of the approval process that don't fit how the admin interface normally operates; I think I'd basically wind up committing an ever uglier pile of hacks just to get a nice looking UI.
(But I do like the admin UI. It has all sorts of nice little bits, and it makes me sad that my version is not going to be half as good.)
Thus, before I let my fiddling urges run away with me I have to remember that the admin interface doesn't really matter; it'll only get used by core system staff to do infrequent database-level operations like adding a new account sponsor. Fiddling around with the admin interface does not get my application actually written. The only thing that does that is sitting down and grinding out various forms.
(I don't regret the fiddling I did with the admin interface; I think I got a decently usable result, one that's somewhat better than a raw view of my schema, and I got a fair amount of Django experience in the process.)
Written on 20 January 2011.
* * *