Il y a beaucoup d'approches pour résoudre ce problème, et en fonction de votre situation un d'entre eux pourraient travailler. Vous pouvez certainement utiliser un TextField pour stocker XML ou JSON ou toute autre forme de texte. En combinaison avec la fonction pickle de Python, vous pouvez faire quelques trucs plus propres.
Vous pouvez regarder Django Pickle définition terrain sur DjangoSnippets: http://www.djangosnippets.org/snippets/513/
qui vous permet de vider les dictionnaires Python dans les champs et fait quelques manipulations de sorte que lorsque vous faites référence à ces champs, vous pouvez obtenir un accès facile aux dictionnaires sans avoir besoin de ré-analyser XML ou quoi que ce soit.
J'imagine que vous pourriez également explorer l'écriture d'une définition de champ personnalisée qui ferait la même chose pour d'autres formats de sérialisation, bien que je ne sois pas sûr de son utilité.
Ou vous pouvez simplement refactoriser votre modèle pour profiter des champs ManyToMany. Vous pouvez créer un modèle pour une clé générique, une paire de valeurs, puis sur votre modèle principal, une référence M2M pour cette clé générique, modèle de valeur. De cette façon, vous pouvez tirer parti de plus de Django ORM aux données de référence, etc.
Il peut également être intéressant de noter qu'à l'avenir, nous aurons peut-être le choix d'adaptateurs NoSQL à utiliser dans Django. Google a ajouté la prise en charge de BigTable sur appengine, et un premier travail a été effectué sur un adaptateur CouchDB. – sixthgear