An external process creates tables whose names follow the pattern "collector_XYZ"; all the tables will have the very same structure.
For each table I need to create a matching django.db.models.Model and django.admin.models.ModelAdmin, dynamically, because over time new tables will be created and I do not want to restart apache after the program is deployed. How can I hook this generation process to the login function of the admin interface so that each time a user logs in django checks if all the tables have a corresponding model? Is there a better mount point? Is there a more django-nic way to accomplish this? from django.db import connection, transaction, connections cursor = connections['collector'].cursor() cursor.execute('SHOW TABLES LIKE "collector_%%"') # table name: collector_identifier_nn # identitifer is unique among all the tables # nn is a two digit number models = {} for t in cursore.fetchall(): ..values = str(t).split('_')[1:] ..models[values[0]] = generaCollector(values[0], values[1]) ..admin.site.register(models[-1]) def generaCollector(cliente, num): ..if type(num) != type(''): ....raise TypeError('parameter client must be of type %s insted of %s' % (type(''), type(cliente))) ..if type(cliente) != type(''): ....raise TypeError('parameter num must be of type %s insted of %s' % (type(''), type(num))) ..cliente = str(cliente).lower() ..nome = 'Collector%s%s' % (cliente.capitalize(), num) ..ret = type(nome, (Collector,), {'__module__': Collector.__dict__['__module__']}) ..ret._meta.db_table = 'collector_%s_%s' % (cliente, num) ..return ret class Collector(models.Model): ..id = models.IntegerField(primary_key=True) ..unique_check = models.CharField(unique=True, max_length=240, blank=True) ..collector = models.CharField(max_length=96, blank=True) ..agent_host = models.CharField(max_length=384, blank=True) ..insert_time = models.DateTimeField(null=True, blank=True) ..# etc etc ..def __unicode__(self): ....return self.insert_time.isoformat() ....class Meta: ......db_table = u'collector' ......abstract = True -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.