2013-02-16 3 views
1

У меня есть одна таблица MySQL, созданная с использованием класса с именем UserProfile, а другая - с классом с именем Connection. Я написал следующий код для извлечения каждого запроса соединения, отправленный одним пользователя и превратить имя цели в строку:Менеджер Django недоступен через экземпляр

allprofiles = UserProfile.objects.all() 

for UserProfile in allprofiles: 
    userconnections = Connection.objects.filter(source_user=UserProfile) 
    for Connection in userconnections: 
     toplay = Connection 
     target_tostring = toplay.target_user 
     print target_tostring 

Но когда я пытаюсь запустить это, Django будет выглядеть следующим образом:

AttributeError       Traceback (most recent call last) 
<ipython-input-6-323348f76c1f> in <module>() 

     1 for UserProfile in allprofiles: 
----> 2   userconnections = Connection.objects.filter(source_user=UserProfile) 
     3   for Connection in userconnections: 
     4     toplay = Connection 
     5     target_tostring = toplay.target_user 

/usr/lib/python2.7/dist-packages/django/db/models/manager.pyc in __get__(self, instance, type) 

    209  def __get__(self, instance, type=None): 
    210   if instance != None: 
--> 211    raise AttributeError("Manager isn't accessible via %s instances" % type.__name__) 
    212   return self.manager 
    213 

AttributeError: Manager isn't accessible via Connection instances 

Что я делаю неправильно? Я написал аналогичный код в прошлом без каких-либо проблем.

+0

Как выглядят ваши модели UserProfile и 'Connection? Измените свой вопрос и добавьте исходный код для этих моделей. –

+0

Использовать UserProfile, то же имя, что и определение модели, для итерации не является хорошей практикой. – iMom0

+0

@ iMom0: спасибо, что сообщили мне. –

ответ

4

Вы переопределяете свои классы UserProfile и Connection. Другими словами, вы заменяете классы моделей данными из своей базы данных. Вместо этого:

for user_profile in UserProfile.objects.all(): 
    for user_connection in Connection.objects.filter(source_user=user_profile): 
     print user_connection.target_usr 
+0

Он работает как шарм. Спасибо. –

+0

Пока еще не удается. –

Смежные вопросы