2012-04-29 19 views
7

Tengo una aplicación que utiliza múltiples bases de datos. Una vez que un objeto ejemplar modelo está en la memoria, ¿cómo puedo determinar de qué base de datos proviene? Específicamente, me gustaría saber esto para usar en un método en la clase de modelo.Obtener base de datos objeto modelo django fue consultado desde

Ejemplo:

class book(Models.model): 
    newdate = models.DateField(default=date.today()) 
    type = models.CharField(
          max_length=30, 
          choices=BOOK_TYPE, 
          default = 'novel', 
          ) 
    def get_current_student(self): 
     if not hasattr(self,'_current_student'): 
      try: 
       self._current_student = clickerlog.objects.using(SELF.ORIGIN_DATABASE).get(book=self.pk,end__isnull = True).student 
      except: 
       self._current_student = none 
     return self._current_student 

class booklog(Models.model): 
    start = models.DateTimeField(
           default=datetime.now(), 
           verbose_name = 'start time' 
           ) 
    end = models.DateTimeField(null=True,blank=True,) 
    book = models.ForeignKey(book) 
    student = models.ForeignKey(student, 
           limit_choices_to = {'isactive':True}) 
+0

cheque http://stackoverflow.com/questions/9929629/how-to-get-the-database -donde-a-model-instance-was-saved-to-in-django – okm

+0

posible duplicado de [¿Sabe un modelo django de qué base de datos se cargó y cómo se puede acceder a esta información?] (http: // stackoverflow. com/questions/4146781/does-a-django-model-know-from-which-database-it-was-loaded-and-how-can-this-info) – Louis

Respuesta

19

Después de un litte más excavación he encontrado:

self._state.db 
Cuestiones relacionadas