Есть словарь, из него на лету создаются модели:
test_dict = {'Ham': [['count', models.IntegerField()]], 'Jam': [['weight', models.IntegerField()], ['manufacture date', models.DateField()]]} models_list = [] for key, value in test_dict.iteritems(): # Models construct. models_list.append(type(key, (models.Model,), {'__module__': __name__})) for item in value: for model in models_list: if model.__name__ == key: # Add fields. model.add_to_class(item[0], item[1]) try: admin.site.register(model) except AlreadyRegistered: pass
А потом таблицы:
BEGIN; CREATE TABLE "rooms_and_users_jam" ( "id" integer NOT NULL PRIMARY KEY, "weight" integer NOT NULL, "manufacture date" date NOT NULL ) ; CREATE TABLE "rooms_and_users_ham" ( "id" integer NOT NULL PRIMARY KEY, "count" integer NOT NULL ) ; COMMIT;
В админке все ок.
Проблема. Мой код выглядит очень простым. Так как раньше ничего подобного не делал, не могу понять, где тут подводные камни. Попинайте.