皆さん。 「次のこと」を実装したいと考えています。ジャンゴのプロファイルモデルの関数。私には関係モデルがあり、両方のフィールドを結合して、クエリに一致するユーザーを選択できるようにしたいと考えています。
私はピーウィーを知っているので、次のようなことをします:
def following(self):
return ( User.select().join(Relationship,
on=Relationship.to_user).where(Relationship.from_user == self))
しかし、django で結合クエリを作成する方法が見つかりませんでした。
これは、models.py にあるモデルです
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
joined_at = models.DateTimeField()
class Meta:
ordering = ['-joined_at']
def __str__(self):
return f'{self.user.username} profile'
def following(self):
""" I want to implement the query here. """
class Relationship(models.Model):
from_user = ForeignKey(User, related_name='relationships')
to_user = ForeignKey(User, related_name='related_to')
次から何を返したいですか... 要求しているものの SQL バージョンを示してください。
– ビプロブ・ラミカーン
2020 年 9 月 3 日 3:55
------------------------
これを試してみることができます。
def following(self):
""" return list objects of User followings """
return Relationship.filter(from_user=self.user)\
.values_list('to_user', flat=True)
しかし、クエリセットとして返す必要があるのですが、どうすればよいでしょうか?
def following(self):
""" this will return as `User` queryset """
user_ids = Relationship.filter(from_user=self.user)\
.values_list('to_user_id', flat=True)
return User.objects.filter(id__in=user_ids)
2
ご回答いただき、誠にありがとうございます。まるで魔法のようにうまくいきました。疑問に思っていたのですが、お時間があれば。何をしたのか、それがどのように機能するのかを説明するためです。または、ドキュメントのどこで詳細を確認できますか。でも、もう一度、ありがとう。
– レオ・フェルナンド
2020 年 9 月 3 日 16:03
@CésarGómez 詳細については、QuerySet API リファレンスを参照してください。
– ビンピー
2020 年 9 月 3 日 23:49