実現したいこと
DjangoでUserをフォロワー順に並べたいが、UserどうしをManyToManyでつなぐようにしたのでよくわからなくなった。
該当のソースコード
Python
1# models.py 2from django.db import models 3from django.contrib.auth.models import AbstractUser 4 5class User(AbstractUser): 6 email = models.EmailField() 7 image = models.ImageField(upload_to="img", default="img/account.png") 8 profiel = models.TextField(null=True, blank=True) 9 follow = models.ManyToManyField("self", blank=True, symmetrical=False) 10 create_date = models.DateTimeField(auto_now_add=True) 11 12 class Meta: 13 ordering = ["-create_date"]
Python
1# views.py 2def index(request): 3 follower_rank = User.objects.all().annotate(cnt=Count("follow")).order_by("-cnt") 4 params = { 5 "follower_rank":follower_rank, 6 "login_user":request.user, 7 } 8 return render(request, "blog/index.html", params)
試したこと
Userどうしの多対多の関係に対称性を望まないのでsymmetrical=Falseにしました
(例えばTomがJiroをフォローした時、Jiroのフォローに勝手にTomが入るのを防ぐため)
User.objects.all().annotate(cnt=Count("follow")).order_by("-cnt") ```とやってみたが昇順も降順もフォロワー順になりませんでした。 ### ツールのバージョンなど Python: 3.7.7 Django: 3.0.2 -----追記----- フォロワー順じゃなくてフォローしている人の数順になってました。 少しわかったので質問を簡潔にします ```python for user in User.objects.all(): user.user_set.all().count()
の個数で並べたいです
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。