Я не совсем уверен в природе проблемы, которую вы пытаетесь решить, но она странно похожа на BigTable Expando из Google App Engine .
Расширения позволяют указывать и хранить дополнительные поля в экземпляре объекта, поддерживаемого базой данных, во время выполнения. Цитировать из документов:
import datetime
from google.appengine.ext import db
class Song(db.Expando):
title = db.StringProperty()
crazy = Song(title='Crazy like a diamond',
author='Lucy Sky',
publish_date='yesterday',
rating=5.0)
crazy.last_minute_note=db.Text('Get a train to the station.')
Google App Engine в настоящее время поддерживает как Python, так и инфраструктуру Django. Может быть стоит посмотреть, если это лучший способ выразить свои модели.
Традиционные модели реляционных баз данных не имеют такой гибкости добавления столбцов. Если ваши типы данных достаточно просты, вы можете отказаться от традиционной философии СУБД и взломать значения в один столбец с помощью сериализации, как предлагает @ Ned Batchelder ; однако, если у вас есть для использования СУБД, вероятно, вам следует воспользоваться наследованием модели Django. В частности, он создаст отношение внешнего ключа один к одному для каждого уровня деривации.