1

という名前のクラスを使用して作成された 1 つの MySQL テーブルUserProfileと、 という名前のクラスを使用して作成された別の MySQL テーブルがありますConnection。1 人のユーザーから送信された各接続要求を取得し、ターゲットの名前を文字列に変換する次のコードを作成しました。

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

私は何を間違っていますか?過去に同様のコードを問題なく記述しました。

4

1 に答える 1

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
于 2013-02-16T00:34:11.343 に答える