首页 文章

django模型 - 用manytomanyfield查询

提问于
浏览
1

我遇到与ManyToManyField连接的1个查询的问题 . 我们有2个相关模型:用户和事件 . 模型事件与用户有2个关系,它必须有1个组织者和任何数量或参与者 - 组织者不能参与(我跳过了负责验证的代码) . 现在,作为一个例子,我想要的是我组织的活动的所有参与者 . 问题是下面的查询只获取request.user本身,全部跳过所有参与者 . 有没有办法在没有任何自定义查询的情况下实现我的需求?谢谢

#models.py

class User(models.Model):
    name = models.CharField(max_length=100)

class Event(models.Model):
    name = models.CharField(max_length=100)
    organiser = models.ForeignKey(User)
    participants = models.ManyToManyField(User, related_name='participants', blank=True, null=True)

#views.py

def assess_partners(request):
    users = User.objects.filter(event__organizer=request.user)
    return render(request, 'some template.html', {'users': users})

1 回答

  • 3

    如果你使用更好的东西会更清楚 related_names ,例如:

    class Event(models.Model):
        name = models.CharField(max_length=100) 
        organiser = models.ForeignKey(User, related_name='events_as_organiser')
        participants = models.ManyToManyField(User, related_name='events_as_participant', blank=True)
    

    我想要的是我组织的活动的所有参与者

    User.objects.filter(events_as_participant__organiser=request.user).distinct()
    

相关问题