Closed5

Djangoのチュートリアルでうまくいかなかったところ

look2233look2233

https://docs.djangoproject.com/ja/3.2/intro/tutorial05/#testing-our-new-view

一部のテストが通らない

  • ['<Question: Past question.>']
  • [<Question: Past question.>]
    の違いといわれる。
    似たようなものもエラーとなる。
    []でくくられているからリストなのだろうか?
    '’で囲われているから文字列として扱われているのか?
 $ python manage.py test polls
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
...F.FF...
======================================================================
FAIL: test_future_question_and_past_question (polls.tests.QuestionIndexViewTests)
Even if both past and future questions exist, only past questions
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/ec2-user/environment/mysite/polls/tests.py", line 89, in test_future_question_and_past_question
    [question],
  File "/usr/local/lib/python3.7/site-packages/django/test/testcases.py", line 940, in assertQuerysetEqual
    return self.assertEqual(list(items), values, msg=msg)
AssertionError: Lists differ: ['<Question: Past question.>'] != [<Question: Past question.>]

First differing element 0:
'<Question: Past question.>'
<Question: Past question.>

- ['<Question: Past question.>']
?  -                          -

+ [<Question: Past question.>]

======================================================================
FAIL: test_past_question (polls.tests.QuestionIndexViewTests)
Questions with a pub_date in the past are displayed on the
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/ec2-user/environment/mysite/polls/tests.py", line 66, in test_past_question
    [question],
  File "/usr/local/lib/python3.7/site-packages/django/test/testcases.py", line 940, in assertQuerysetEqual
    return self.assertEqual(list(items), values, msg=msg)
AssertionError: Lists differ: ['<Question: Past question.>'] != [<Question: Past question.>]

First differing element 0:
'<Question: Past question.>'
<Question: Past question.>

- ['<Question: Past question.>']
?  -                          -

+ [<Question: Past question.>]

======================================================================
FAIL: test_two_past_questions (polls.tests.QuestionIndexViewTests)
The questions index page may display multiple questions.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/ec2-user/environment/mysite/polls/tests.py", line 101, in test_two_past_questions
    [question2, question1],
  File "/usr/local/lib/python3.7/site-packages/django/test/testcases.py", line 940, in assertQuerysetEqual
    return self.assertEqual(list(items), values, msg=msg)
AssertionError: Lists differ: ['<Question: Past question 2.>', '<Question: Past question 1.>'] != [<Question: Past question 2.>, <Question: Past question 1.>]

First differing element 0:
'<Question: Past question 2.>'
<Question: Past question 2.>

- ['<Question: Past question 2.>', '<Question: Past question 1.>']
?  -                            -  -                            -

+ [<Question: Past question 2.>, <Question: Past question 1.>]

----------------------------------------------------------------------
Ran 10 tests in 0.049s

FAILED (failures=3)
Destroying test database for alias 'default'...
look2233look2233
        print("question",type(question))
        print("context",type(response.context['latest_question_list']))

としてみると

question <class 'polls.models.Question'>
context <class 'django.db.models.query.QuerySet'>
look2233look2233

https://docs.djangoproject.com/ja/3.2/intro/tutorial07/#customize-the-admin-look-and-feel

class Question(models.Model):
    # ...
    @admin.display(
        boolean=True,
        ordering='pub_date',
        description='Published recently?',
    )

の部分は displayのメソッド
python 3.x - In django i got AttributeError: module 'django.contrib.admin' has no attribute 'display' - Stack Overflow
https://stackoverflow.com/questions/67418161/in-django-i-got-attributeerror-module-django-contrib-admin-has-no-attribute

python -m django --version
2.0.2
look2233look2233

djangoのバージョンを3.2にあげたらエラーは出なくなった。
sqlite3はバージョンを上げる必要があった。パッケージではインストールできなかったので、ソースからmakeした。

このスクラップは2021/10/18にクローズされました