Django ORM 更好的方法来操作 django ORM 查询来查找相关数据
Django ORM better way to manipulate django ORM query to find related data
型号:
class Tweets(models.Model):
date_created = models.DateTimeField(default=now, verbose_name="Created on")
tweet_data = models.TextField(verbose_name='tweet message')
user = models.ForeignKey(User,on_delete=DO_NOTHING)
class UserFollowers(models.Model):
follower_user = models.ForeignKey(User,on_delete=CASCADE,related_name="follower")
followee_user = models.ForeignKey(User,on_delete=CASCADE,related_name="followee")
UserFollowers table 有谁关注谁的记录。
在这里,
我需要获取我关注的人发布的所有推文
当前方法:
myfollowees = UserFollowers.objects.filter(follower_user=user_idx)
print(myfollowees)
myfolloweeslist = []
for ele in myfollowees:
myfolloweeslist.append(ele.followee_user.id)
my_timeline_tweets = Tweets.objects.filter(user_id__in = myfolloweeslist)
- generate the my followee list(我关注的人列表)
- 获取推文,其中推文由 userid 发布并且也存在于 myfolloweelist
中
我想知道是否有更好的方法来处理这个问题。
我试过了,它只对 user_idx 的一个值有效,但对其他值无效:
my_timeline_tweets = Tweets.objects.filter(user__follower = user_idx)
您可以过滤:
Tweet.objects.filter(<strong>user__followee__follower_user=user_idx</strong>)
这将检索 Tweet
s,其中 .user
是一个 User
对象,其中 UserFollowers
对象存在 .user
Tweet
作为 followee_user
,作为 follower_user
user_idx
。
Note: It is normally better to make use of the settings.AUTH_USER_MODEL
[Django-doc] to refer to the user model, than to use the User
model [Django-doc] directly. For more information you can see the referencing the User
model section of the documentation.
型号:
class Tweets(models.Model):
date_created = models.DateTimeField(default=now, verbose_name="Created on")
tweet_data = models.TextField(verbose_name='tweet message')
user = models.ForeignKey(User,on_delete=DO_NOTHING)
class UserFollowers(models.Model):
follower_user = models.ForeignKey(User,on_delete=CASCADE,related_name="follower")
followee_user = models.ForeignKey(User,on_delete=CASCADE,related_name="followee")
UserFollowers table 有谁关注谁的记录。
在这里, 我需要获取我关注的人发布的所有推文
当前方法:
myfollowees = UserFollowers.objects.filter(follower_user=user_idx)
print(myfollowees)
myfolloweeslist = []
for ele in myfollowees:
myfolloweeslist.append(ele.followee_user.id)
my_timeline_tweets = Tweets.objects.filter(user_id__in = myfolloweeslist)
- generate the my followee list(我关注的人列表)
- 获取推文,其中推文由 userid 发布并且也存在于 myfolloweelist 中
我想知道是否有更好的方法来处理这个问题。
我试过了,它只对 user_idx 的一个值有效,但对其他值无效:
my_timeline_tweets = Tweets.objects.filter(user__follower = user_idx)
您可以过滤:
Tweet.objects.filter(<strong>user__followee__follower_user=user_idx</strong>)
这将检索 Tweet
s,其中 .user
是一个 User
对象,其中 UserFollowers
对象存在 .user
Tweet
作为 followee_user
,作为 follower_user
user_idx
。
Note: It is normally better to make use of the
settings.AUTH_USER_MODEL
[Django-doc] to refer to the user model, than to use theUser
model [Django-doc] directly. For more information you can see the referencing theUser
model section of the documentation.