5

Userのクラスを使用してdjangoアプリを作成していdjango.contrib.auth.modelsます。

ユーザーとの M2M 関係を持つグループと呼ばれるモデルを定義しました。特定のユーザーが属するグループを取得するのが困難です。

グループの定義は次のとおりです。

class group(models.Model):
    user = models.ForeignKey(User,related_name = 'owner') # the owner
    name = models.CharField(max_length=100) # name of the group 

    # members of the group
    members = models.ManyToManyField(User,related_name = 'member')

    def __unicode__(self):
        return str(self.name)

ユーザーがグループのメンバーフィールドに属しているグループを取得したいと思います。

これは、特定のユーザーが属するグループを取得しようとして失敗するコマンドです - 理由はわかりません - 教えていただけますか? (userUserインスタンス)

user_groups = user.group_set.all()

私が得るエラーは次のとおりです。

 'User' object has no attribute 'group_set'

ここで何が問題なのですか?

解決

私は最終的に解決策を見つけました。を使用してクエリを作成する必要があったため、次のrelated_nameとおりです。

groups_member = user.member.all()
4

1 に答える 1

10

多対多の関係はプロパティを介して行われmembers、このプロパティにはrelated_name属性があるため、正しい構文は次のとおりです。

user_groups = user.member.all()

(関連するname属性がないと、次のようになりますuser_groups = user.members_set.all()

そして、その逆の関係は次のとおりです。

group_users = group.members.all()
于 2012-04-13T21:09:25.707 に答える