0

我无法弄清楚如何为以下场景适当地过滤查询集。

我有一个有很多参与者的活动。这两个模型都是从外国数据源导入的,所以我想保留他们数据的永久副本:

class Event(models.Model):
    address = etc...

class Participant(models.Model):
    event = models.ForeignKey('Event')
    user_profile = models.ForeignKey('people.UserProfile', blank=True, null=True)
    name = etc...

当外部数据源收到一个新事件时,它会向我发送一份副本,我将其填写到这些模型中。导入脚本使用参与者的姓名字段尝试在其现有的人员列表中找到他们,如果是,则建立外键。

我手头有当前登录的 UserProfile 和 Event.objects.all。我想按当前登录的用户过滤事件。.filter() 的参数应该是什么来实现这一点?

4

2 回答 2

1

首先,你有一个 ForeignKey 来auth.User命名user_profile。这很令人困惑。

其次,如果您想要与当前用户无关的所有事件,您想要:

Event.objects.exclude(participant__user_profile=request.user)
于 2012-06-18T20:36:15.713 回答
0

看来它没有复数形式也有效。

Event.objects.filter(参与者__user_profile=UserProfile.objects.get(user=get_current‌​_user()))

于 2012-06-18T19:58:25.387 回答