katsumasa0514
@katsumasa0514 (ASAP k)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

djangoでquerysetを取得しhtmlで表示

解決したいこと

WEBアプリを制作しています。
今回アプリ内でフォロワーの数を表示する際に、DBからcount等を使いquerysetを取得しブラウザでの表示に成功しました。
しかし、nullのデータも合わせてカウントしてしまうため出力結果が『1』となり、正確なデータが取得できません。

views.py
@login_required(login_url='/movieist/accounts/login/')
def profile(request):
    followingData = Follow.objects.filter(
        owner=request.user.id).values('following').count()
    followerData = Follow.objects.filter(
        owner=request.user.id).values('follower').count()

    params = {
        'followingData': followingData,
        'followerData': followerData,

    }

    return render(request, 'movieist/profile.html', params)
html
                        <div class="follower">
                            <h1>{{followerData}}</h1>
                        </div>
                        <div class="following">
                            <h1>{{followingData}}</h1>
                        </div>
mysql> select * from movieist_follow ;
+----+-----------+----------+----------+
| id | following | follower | owner_id |
+----+-----------+----------+----------+
|  2 |      NULL |     NULL |       12 | <--これでログイン中
+----+-----------+----------+----------+
2 rows in set (0.00 sec)

出力結果を『0』にしたいです。
至らないところも多々あるかと思いますがよろしくお願いします。

0

2Answer

Djangoを全く理解して無くてアレなのですが、
~.filter(following__isnull=False).count()とか、
~.count('following', filter=Q(following__isnull=False))とか、
みたいなことできないでしょうか。

0Like

Comments

  1. お力になれず申し訳ございません。
    djangoを知らないので、filterの書き方とか間違っている可能性もあります。
  2. @katsumasa0514

    Questioner

    回答ありがとうございます!
    ~.filter(following__isnull=False).count()
    で解決しました!
    ありがとうございました。
  3. @katsumasa0514

    Questioner

    入力が間違ってたみたいです。
    やり直したらできました。
    お手間をおかけしてしまいすいません。

Django知らない&理解力が低いで申し訳ないけども
movieist_followテーブルの
following、followerってもしかして
owner_idがフォローしている人数、フォロワーの人数が入ってる?
だったらcountする必要がないような…

0Like

Comments

  1. @katsumasa0514

    Questioner

    コメントありがとうございます。
    入っているデータはUserのIDが入る予定なのでcountできたらと思っています。

Your answer might help someone💌