Modelos:
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")La tabla UserFollowers tiene un registro de quién sigue a quién.
Aquí, necesito obtener todos los tweets publicados por las personas a las que sigo
Enfoque actual:
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)Me gustaría saber si hay una mejor manera de manejar esto.
Intenté esto y funcionó solo para un valor de user_idx pero no para otros:
my_timeline_tweets = Tweets.objects.filter(user__follower = user_idx)Puedes filtrar con:
Tweet.objects.filter( user__followee__follower_user=user_idx ) Esto recuperará los .user Tweet un objeto User para el que existe un objeto UserFollowers con el .user del Tweet como followee_user y como follower_user el user_idx .
Nota : normalmente es mejor hacer uso de la
settings.AUTH_USER_MODEL[Django-doc] para referirse al modelo de usuario, que usar el modeloUser[Django-doc] directamente. Para obtener más información, puede consultar la referencia a la sección Modelo deUserde la documentación .