前提
DjangoでSNSを作っています。
Follow機能を実装中に以下のエラーメッセージが発生しました。
実現したいこと
エラーを解決する
発生している問題・エラーメッセージ
Cannot assign "User": "FollowersCount.FollowerID" must be a "CustomUser" instance.
該当のソースコード
models.py(FollowApp)
1from django.db import models 2from accounts.models import CustomUser 3# Create your models here. 4 5class FollowersCount(models.Model): 6 FollowerID = models.ForeignKey(CustomUser, on_delete=models.CASCADE,related_name='UserFollowerID') 7 Follower_UserID = models.OneToOneField(CustomUser, on_delete=models.CASCADE,related_name='UserUserID')
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 10 11 is_staff = models.BooleanField( 12 ('staff status'), 13 default=False, 14 help_text=('Designates whether the user can log into this admin site.'), 15 ) 16 is_active = models.BooleanField( 17 ('active'), 18 default=True, 19 help_text=( 20 'Designates whether this user should be treated as active. ' 21 'Unselect this instead of deleting accounts.' 22 ), 23 ) 24 25 objects = UserManager() 26 27 USERNAME_FIELD = 'email' 28 EMAIL_FIELD = 'email' 29 REQUIRED_FIELDS = [] 30 31 class Meta: 32 verbose_name = ('user') 33 verbose_name_plural = ('users') 34 35 def clean(self): 36 super().clean() 37 self.email = self.__class__.objects.normalize_email(self.email)
views.py(followApp)
1from django.shortcuts import render,get_object_or_404,redirect 2from accounts.models import CustomUser 3from .models import FollowersCount 4# Create your views here. 5 6def follow_base(request): 7 #モデルで作成したCustomUserクラスからログイン中のユーザー情報を取得 8 user_data = CustomUser.objects.get(id = request.user.id) 9 data = CustomUser.objects.all() 10 params = { 11 'data':data, 12 } 13 return render(request,'follow/follow_base.html',params) 14 15def follow_index(request,pk): 16 CustomUser_data = get_object_or_404(CustomUser,pk=pk) 17 18 Follow_UserID = CustomUser_data.UserID 19 current_user = Follow_UserID #フォローするユーザー 20 logged_in_user = request.user.UserID #ログインしているユーザー(自分) 21 print(current_user) 22 print(logged_in_user) 23 params = { 24 'CustomUser_data': CustomUser_data, 25 'current_user':current_user, 26 'logged_in_user':logged_in_user, 27 } 28 return render(request,'follow/follow_count.html',params) 29 30 31def follow_count(request,pk): 32 #UserID = CustomUser.objects.get(UserID=UserID) 33 #FolloweID = CustomUser.objects.get(FolloweID=UserID) 34 if request.method == 'POST': 35 value = request.POST['value'] 36 user = request.POST['user'] 37 follower = request.POST['follower'] 38 print(value) 39 print(user) 40 print(follower) 41 if value == 'follow': 42 followers_cnt = FollowersCount.objects.create(FollowerID= user, Follower_UserID = follower) 43 followers_cnt.save() 44 45 return redirect('/?user='+user) 46
follow_count.html(tmplates/follow)
1<div class="select-container"> 2 <h1 class="title">User詳細</h1> 3 <div class="select-card"> 4 <div class="card-imgframe"> 5 <img src="{{ CustomUser_data.ProfileImage.url }}" width="350" height="400" /> 6 </div> 7 <div class="select-card-textbox"> 8 <div class="select-card-name"> 9 <h1>{{ CustomUser_data.UserID }}</h1> 10 </div> 11 <div class="select-card-text"> 12 <h3>{{ CustomUser_data.name }}</h3> 13 </div> 14 <div class="select-card-explain"> 15 <h4>{{ CustomUser_data.bio }}</h4> 16 </div> 17 </div> 18 <form action="followers_count" method="POST"> 19 {% csrf_token %} 20 <input type="hidden" name="user" value="{{current_user}}" readonly/> <!--ここはフォローしたいユーザー(相手)--> 21 <input type="hidden" name="follower" value="{{logged_in_user}}" readonly/> <!--ここはログインしているユーザー(自分)--> 22 <input type="hidden" name="value" value="follow" readonly/> 23 <button type="submit" class="btn profile-edit-btn"> 24 Follow 25 </button> 26 </form> 27 </div> 28</div> 29 30
試したこと
databaseなどの見直しや作り直しを何回もしましたが、このエラーが出てきてしまいわかりません。
補足情報(FW/ツールのバージョンなど)
Django~=3.1.4
django-allauth~=0.41.0
django-widget-tweaks~=1.4.8
Pillow~=8.1.0
回答1件
あなたの回答
tips
プレビュー