前提
DjangoでSNSアプリを作っているのですが、フォロー機能の搭載がうまくいきません。
実現したいこと
フォロー機能の完成
発生している問題
follow_button_value = 'unfollow' のunfollowが返ってこない。 logged_in_user と user_followers が同じなのに機能しない。
models.py(FollowApp)
from django.db import models from accounts.models import CustomUser # Create your models here. class FollowersCount(models.Model): FollowerID = models.ForeignKey(CustomUser, on_delete=models.CASCADE,related_name='UserFollowerID') FollowerUserID = models.OneToOneField(CustomUser, on_delete=models.CASCADE,related_name='UserUserID') # Create your models here.
views.py(FollowApp)
1from django.shortcuts import render,get_object_or_404,redirect 2from accounts.models import CustomUser 3from follow.models import FollowersCount 4# Create your views here. 5 6 7def follow_base(request): 8 #モデルで作成したCustomUserクラスからログイン中のユーザー情報を取得 9 user_data = CustomUser.objects.get(id = request.user.id) 10 data = CustomUser.objects.all() 11 params = { 12 'data':data, 13 } 14 return render(request,'follow/follow_base.html',params) 15 16def follow_index(request,UserID): 17 CustomUser_data = get_object_or_404(CustomUser,UserID=UserID) 18 19 FollowUserID = CustomUser_data.UserID 20 current_user = FollowUserID #フォローするユーザー 21 logged_in_user = request.user.UserID #ログインしているユーザー(自分) 22 user = CustomUser.objects.get(UserID=UserID) 23 followers = logged_in_user #フォローするユーザー 24 25 user_followers = [] 26 if logged_in_user in user_followers: 27 user_followers.remove(logged_in_user) 28 follow_button_value = 'unfollow' 29 else: 30 user_followers.append(followers) 31 follow_button_value = 'follow' 32 33 params = { 34 'CustomUser_data': CustomUser_data, 35 'current_user':current_user, 36 'logged_in_user':logged_in_user, 37 } 38 return render(request,'follow/follow_count.html',params)
follow_count.html(FollowApp)
1{% extends 'app/base.html' %} 2{% block content %} 3 4<div class="select-container"> 5 <h1 class="title">User詳細</h1> 6 <div class="select-card"> 7 <div class="card-imgframe"> 8 <img src="{{ CustomUser_data.ProfileImage.url }}" width="350" height="400" /> 9 </div> 10 <div class="select-card-textbox"> 11 <div class="select-card-name"> 12 <h1>{{ CustomUser_data.UserID }}</h1> 13 </div> 14 <div class="select-card-text"> 15 <h3>{{ CustomUser_data.name }}</h3> 16 </div> 17 <div class="select-card-explain"> 18 <h4>{{ CustomUser_data.bio }}</h4> 19 </div> 20 <div class="select-card-explain"> 21 <h4>フォロワー:{{ CustomUser_data.Follower }}</h4> 22 </div> 23 <div class="select-card-explain"> 24 <h4>フォロー中:{{ CustomUser_data.Following }}</h4> 25 </div> 26 </div> 27 <form action="followers_count" method="POST"> 28 {% csrf_token %} 29 <input type="hidden" name="user" value="{{current_user}}" readonly/> <!--ここはフォローしたいユーザー(相手)--> 30 <input type="hidden" name="follower" value="{{logged_in_user}}" readonly/> <!--ここはログインしているユーザー(自分)--> 31 {% if follow_button_value == 'follow' %} 32 <input type="hidden" name="value" value="follow" readonly/> 33 <button type="submit" class="btn profile-edit-btn"> 34 Follow 35 </button> 36 {% else %} 37 <input type="hidden" name="value" value="unfollow" readonly/> 38 <button type="submit" class="btn profile-edit-btn"> 39 Unfollow 40 </button> 41 {% endif %} 42 </form> 43 </div> 44</div> 45 46{% endblock %}
models.py(AccountsApp)
1class CustomUser(AbstractBaseUser, PermissionsMixin): 2 UserID = models.CharField(('UserID'),max_length=15,unique=True,null=False) 3 name = models.CharField(('Name'),max_length=32,unique=True,null=False) 4 email = models.EmailField(('Email'),max_length=256,unique=True) 5 birthday = models.DateTimeField(('Birthday'), default=timezone.now) 6 bio = models.CharField(('bio'),max_length=1056) 7 ProfileImage = models.ImageField(upload_to='images', verbose_name='ProfileImage',null=True,blank=True) 8 created_at = models.DateTimeField(('create'), default= timezone.now) 9 Follower = models.IntegerField(default=0) 10 Following = models.IntegerField(default=0)
試したこと
さまざまなやり方を試してきましかが、どれも機能しませんでした。
user_followers = [] がずっと空になっていることが原因だそうです。
user_followers.append(followers)で値を追加しているはずが、user_followersに追加されていないようです。
どうすれば、user_followersに値が入って保存されますか?
補足情報(FW/ツールのバージョンなど)
Django~=3.1.4
django-allauth~=0.41.0
django-widget-tweaks~=1.4.8
https://www.youtube.com/watch?v=hKflMkEsIrI&t=1153s
上記の動画を参考に作っています。

回答1件
あなたの回答
tips
プレビュー