2012-04-29 24 views
7

Mam aplikacji, która korzysta z wielu baz danych. Kiedy obiekt instancji modelu znajduje się w pamięci, w jaki sposób określić, z której bazy danych pochodzi? W szczególności chciałbym to wiedzieć do zastosowania w metodzie klasy modelu.Pobierz obiekt bazy danych django obiekt został zapytany od

przykład:

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

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

+0

możliwy duplikat [Czy model django wie, z której bazy danych został załadowany i jak można uzyskać dostęp do tych informacji?] (http: // stackoverflow. com/questions/4146781/does-a-django-model-know-from-which-database-it-was-loaded-and-how-can-this-info) – Louis

Odpowiedz

19

Po Litte więcej kopania, że ​​okazało się, że:

self._state.db 
Powiązane problemy