質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

解決済

Databaseエラー

ashigaru21
ashigaru21

総合スコア4

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1回答

1グッド

0クリップ

180閲覧

投稿2022/12/06 04:02

前提

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

ashigaru21👍を押しています

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

yuma.inaura

2022/12/06 04:58

どんなタイミングでエラーが発生するんでしょうか? エラーの行番号は分かりませんか?
ashigaru21

2022/12/06 09:56

Followボタンを押すと(followApp)のviews.pyの followers_cnt = FollowersCount.objects.create(FollowerID= user, Follower_UserID = follower) 部分で上記のエラーが起こってしまいます。

回答1

0

自己解決

views.py(followApp)

1def follow_count(request,pk): 2 CustomUser_data = get_object_or_404(CustomUser,pk=pk) 3 #UserID = CustomUser.objects.get(UserID=UserID) 4 #FolloweID = CustomUser.objects.get(FolloweID=UserID) 5 if request.method == 'POST': 6 value = request.POST['value'] 7 user = request.POST['user'] 8 follower = request.POST['follower'] 9 print(value) 10 print(user) 11 print(follower) 12 if value == 'follow': 13 follower_user = CustomUser.objects.get(UserID=follower) #追加 14 user_follower = CustomUser.objects.get(UserID=user) #追加 15 followers_cnt = FollowersCount.objects.create(FollowerID = follower_user, FollowerUserID = user_follower); 16 followers_cnt.save() 17 params = { 18 'CustomUser_data': CustomUser_data, 19 } 20 return redirect('/?user='+user)

#追加の部分でCustomUserと繋げることで動きました!!

投稿2022/12/06 09:59

ashigaru21

総合スコア4

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。