And the method in your post doesn't work because... ?
If for some reason you really need to fiddle with the builtin FlatPage class and edit it dynamically, you can hook to the class_prepared signal:
http://docs.djangoproject.com/en/dev/ref/signals/#class-prepared
Edit
Here's how you'd do it with a class_prepared:
from django.db.models.signals import class_prepared
from django.db import models
def alter_flatpages(sender, **kwargs):
if sender.__module__ == 'django.contrib.flatpages.models' and sender.__name__ == 'FlatPage':
order = models.IntegerField()
order.contribute_to_class(sender, 'order')
class_prepared.connect(alter_flatpages)
Put this in, say, 'signals.py' in the same directory as your settings.py, and add 'signals' to the top (this is important, to make sure the signal handler gets installed in time) of the INSTALLED_APPS list .
However, this still won't get the field displayed in Admin, because there's a custom ModelAdmin class for FlatPages which explicitely lists the fields. So after it gets registered in the flatpages app, you'd need to unregister it somewhere (admin.site.unregister) and register a ModelAdmin of your own.