これらの特別な多対多の関係については、モデルで定義する必要があります。
class UserFollowing(models.Model):
user = models.ForeignKey(User, related_name='following')
following = models.ForeignKey(User, related_name='followed_by')
したがって、ユーザーがいる場合は、次のようなことができます。
user = User.objects.get(...)
user.following.all() # all users this user is following
user.followed_by.all() # all users who follow this user
記事に関しては、同様のスキーマをセットアップしました。
class ArticleLike(models.Model):
article = models.ForeignKey(Article, related_name='likes')
like = models.ForeignKey(User, related_name='articles_like')
Article.objects.get(...).likes.all()
User.objects.get(...).articles_like.all()