А метод в вашем посте не работает, потому что ...?
Если по какой-то причине вам действительно нужно поиграться со встроенным классом FlatPage и отредактировать его динамически, вы можете подключиться к сигналу class_prepared:
http://docs.djangoproject.com/en/dev/ref/signals/#class-prepared
Редактировать
Вот как вы можете это сделать с 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)
Поместите это, скажем, в «signal.py» в тот же каталог, что и ваш settings.py, и добавьте «сигналы» в top (это важно, чтобы убедиться, что обработчик сигналов получает установлен вовремя) из списка INSTALLED_APPS.
Однако это поле не будет отображаться в Admin, потому что есть специальный класс ModelAdmin для FlatPages, который явно перечисляет поля. Поэтому после того, как он будет зарегистрирован в приложении flatpages, вам нужно будет отменить его регистрацию где-нибудь (admin.site.unregister) и зарегистрировать собственный ModelAdmin.