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

auth.Userまず、 namedへの ForeignKey があります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 に答える