I am trying to setup a custom manager to connect to another database
on the same server as my default mysql connection.  I have tried
following the examples here
http://groups.google.com/group/django-developers/browse_thread/thread/5d8c73eb483029af/19b19ed79bbbfa0d
and here 
http://www.djangrrl.com/view/multiple-database-connection-a-simple-use-case/
but have had no luck.  I get an empty tuple when returning
MyCustomModel.objects.all().

Here is what I have in manager.py
from django.db import models
from django.db.backends.mysql.base import DatabaseWrapper
from django.conf import settings

class CustomManager(models.Manager):
    """
    This Manager lets you set the DATABASE_NAME on a per-model basis.
    """
    def __init__(self, database_name, *args, **kwargs):
        models.Manager.__init__(self, *args, **kwargs)
        self.database_name = database_name

    def get_query_set(self):
        qs = models.Manager.get_query_set(self)
        qs.query.connection = self.get_db_wrapper()
        return qs

    def get_db_wrapper(self):
        # Monkeypatch the settings file. This is not thread-safe!
        old_db_name = settings.DATABASE_NAME
        settings.DATABASE_NAME = self.database_name
        wrapper = DatabaseWrapper()
        wrapper._cursor(settings)
        settings.DATABASE_NAME = old_db_name
        return wrapper

and here is what I have in models.py:

from django.db import models
from myproject.myapp.manager import CustomManager
class MyCustomModel(models.Model):
    field1  = models.CharField(max_length=765)
    attribute = models.CharField(max_length=765)

    objects = CustomManager('custom_database_name')

    class Meta:
        abstract = True

But if I run MyCustomModel.objects.all() I get an empty list.

I am pretty new at this stuff so I am not sure if this works with
1.0.2, I am going to look into the Manager code to see if I can figure
it out but I am just wondering if I am doing something wrong here.

Thanks,
Justin



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@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
-~----------~----~----~----~------~----~------~--~---

Reply via email to