2016-08-26 6 views
1

私はここで失われています。私は別のqsの外来キーで指された値で構成されたクエリーセット(qs)を生成する必要があります。ForeignKeyの値からクエリーセットを生成

さて、私は単純なモデルを持っているとしましょう:

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

class Comment(models.Model): 
    user = models.ForeignKey(User, related_field="comments") 

    def __str__(self): 
     return "%s's comment"%self.user.name 

は私が持っていることで構成適量(多くの)特別に選択コメントです。外部キーの

[<Comment: "user_A's comment">,<Comment: "user_B's comment">,...]

そして私は私の前適量で指された値から、ユーザーで構成適量を生成する必要がありますと言います。その結果適量を持っているので、今、私はちょうどそのような私も試した

など、他のユーザー適量、フィルタリング、と結合として、デシベルでさらに操作を実行するために、リストを取得するためにvalues('user')を使用カントいくつかの成功と.raw()を使用してプロセスをbruteforceするが、私はどちらかを使用することはできませんrawQuerySetオブジェクトを取得します。

extra()select_related()についてのドキュメントを見ると、何とか方法があると思っていましたが、私はそれを理解できません。

答えて

0

いろいろ試した後、私は自分がしたいことを正確に行う方法を見つけました。 は複数回ヒットする必要があるため、アプローチは少し非効率的ですが、結果は適切な形式(クエリーセット)になります。同じ問題に遭遇した人のために、ここで言う、別のクエリセット、コメント与え、ユーザーのForeignKeyが指す値からのクエリセットを生成するための方法です:

some_users_queryset = User.objects.filter(comments__pk__in=some_comments_queryset) 
some_users_queryset = some_users_queryset.distinct() 

私が言ったように、私が思ういけませんこの方法が最も効率的ですが、私はDjangoで遊んでいる間に純粋なSQLの使用を制限したいと思います。

もちろん、同じ結果を達成するためのより良い、迅速な方法についてお聞きしたいと思います。

関連する問題