前提・実現したいこと
djangoで、データベースから任意の条件のデータを取得しようとしています。
「Test」テーブルにおいて外部キーで取得した「UserInfo」テーブルの「userId」が1111のものを取得するため、views.pyで
test = Test.objects.all().filter(user__userId__exact=1111)
を行ったのですが、
ValueError: Field 'userId' expected a number but got ''.
というエラーメッセージが出てきてしまいます。なお、
print(Test.objects.all())
↓
<QuerySet [<Test: 2021-09-30 1111, 佐藤 太郎>]>
のように、Testテーブル自体にデータが入っていることは確認しました。それでもuserIdの中を取得できない理由をいろいろと調べたのですが、納得のいく答えが見つからず行き詰っています。
もし原因に心当たりのある方がいらっしゃれば、初歩的な質問で恐縮ですが、ご回答よろしくお願いします。
発生している問題・エラーメッセージ
ValueError: Field 'userId' expected a number but got ''.
該当のソースコード
models.py
from django.db import models class UserInfo(models.Model): userId = models.IntegerField('ユーザーID') name = models.CharField('名前', max_length=30) def __str__(self): return str(self.userId) + ', ' + self.name class Test(models.Model): user = models.ForeignKey(UserInfo, on_delete=models.CASCADE, null=True) test_date = models.DateField('受験日', default=timezone.now) test_name = models.ForeignKey(Testcode, on_delete=models.CASCADE, null=True) def __str__(self): return str(self.test_date) + ' ' + str(self.user)
views.py
def index(request): test = Test.objects.all().filter(user__userId__exact=1111) #Testテーブルで外部キーで取得した「UserInfo」テーブルの「userId」が1111のものを取得したい return render(request, 'webtestapp/index.html', {'test':test})
回答1件
あなたの回答
tips
プレビュー