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

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

ただいまの
回答率

89.08%

AttributeErrorについて

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 458

ingramzero

score 13

Djangoまとめを参考にしてdjangoのAPIを叩くところまで進んだのですが、q.choice_set.all()というコマンドを叩いたら↓↓というエラーが吐かれました。どうかご助力お願い出来ますでしょうか。

Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'Question' object has no attribute 'choice_set'

コマンドプロンプト

>>> from polls.models import Choice, Question

# Make sure our __str__() addition worked.
>>> Question.objects.all()
<QuerySet [<Question: What's up?>]>

# Django provides a rich database lookup API that's entirely driven by
# keyword arguments.
>>> Question.objects.filter(id=1)
<QuerySet [<Question: What's up?>]>                                          
>>> Question.objects.filter(question_text__startswith='What')
<QuerySet [<Question: What's up?>]> 

# Get the question that was published this year.
>>> from django.utils import timezone
>>> current_year = timezone.now().year
>>> Question.objects.get(pub_date__year=current_year)
<Question: What's up?>

# Request an ID that doesn't exist, this will raise an exception.
>>> Question.objects.get(id=2)
Traceback (most recent call last):
    ...
DoesNotExist: Question matching query does not exist.

# Lookup by a primary key is the most common case, so Django provides a
# shortcut for primary-key exact lookups.
# The following is identical to Question.objects.get(id=1).
>>> Question.objects.get(pk=1)
<Question: What's up?> 

# Make sure our custom method worked.
>>> q = Question.objects.get(pk=1)
>>> q.was_published_recently()
True

# Give the Question a couple of Choices. The create call constructs a new
# Choice object, does the INSERT statement, adds the choice to the set
# of available choices and returns the new Choice object. Django creates
# a set to hold the "other side" of a ForeignKey relation
# (e.g. a question's choice) which can be accessed via the API.
>>> q = Question.objects.get(pk=1)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'Question' object has no attribute 'choice_set'
>>> 
# Display any choices from the related ob

polls/models.py

import datetime

from django.db import models
from django.utils import timezone


class Question(models.Model):
    question_text = models.CharField(max_length=200)#質問文
    pub_date = models.DateTimeField('date published')#公開日

    def __str__(self):
        return self.question_text

    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

class Choice:
    question = models.ForeignKey(Question, on_delete=models.CASCADE)#質問文の読み込み
    choice_text = models.CharField(max_length=200)#質問に対する選択肢
    votes = models.IntegerField(default=0)#投票数

    def __str__(self):
        return self.choice_text
# Create your models here.

polls/admin.py

from django.contrib import admin
from .models import Question

admin.site.register(Question)
# Register your models here.

todo/models.py

from django.db import models

class Post(models.Model):
    body = models.CharField(max_length=200)
# Create your models here.

todo/admin.py

from django.contrib import admin
from .models import Question

admin.site.register(Question)
# Register your models here.
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Orlofsky

    2019/07/22 13:47

    URLは https://teratail.com/help/question-tips#questionTips3-7 の [リンク] に修正してください。

    キャンセル

  • m.ts10806

    2019/07/22 13:59

    Questionはテーブルでしょうか?
    テーブル定義やサンプルデータがわかる情報をご提示ください。

    キャンセル

回答 1

-2

'Question' オブジェクトには'choice_set'というアトリビュートはありません
というエラーですね。
どこにそれは書かれてるんでしょう

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/07/22 14:56 編集

    'Question'オブジェクトには確かに'choice_set'というアトリビュートは定義されていませんでした....

    ただ、<Query Set[]>の値が返ってきていました。
    ディレクトリもディレクトリの中身も何度も確認しましたが参考サイトとの差異はありませんでした。

    キャンセル

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

  • ただいまの回答率 89.08%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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