mik*_*une 2 django many-to-many
我正在使用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)
Run Code Online (Sandbox Code Playgroud)
我想检索用户所属的组到组的成员字段.
这是失败的命令,试图检索特定用户所属的组 - 我不知道为什么 - 你能告诉我吗?(user是一个User实例)
user_groups = user.group_set.all()
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
'User' object has no attribute 'group_set'
Run Code Online (Sandbox Code Playgroud)
这有什么不对?
解
我终于找到了解决方案.我不得不用查询进行查询related_name,所以这里是:
groups_member = user.member.all()
Run Code Online (Sandbox Code Playgroud)
因为多对多关系是通过members属性,并且此属性具有related_name属性,所以正确的语法是:
user_groups = user.member.all()
Run Code Online (Sandbox Code Playgroud)
(没有相关的名称属性,它会user_groups = user.members_set.all())
相反的关系是:
group_users = group.members.all()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4420 次 |
| 最近记录: |