Django Tutorial Part 9 -- detail で question の子供テーブルの中身も出す。

kaede_io

kaede

Posted on April 17, 2022

Django Tutorial Part 9 -- detail で question の子供テーブルの中身も出す。

何をするのか

https://docs.djangoproject.com/en/4.0/intro/tutorial03/#use-the-template-system

shell モードを起動して Question1 の Children を確認

docker-compose run web \
python manage.py shell

Enter fullscreen mode Exit fullscreen mode

shell モードを起動し


>>> 
from polls.models import Choice, Question
Question.objects.get(pk=1)
<Question: What's up?>

q = Question.objects.get(pk=1)
q.choice_set.all()
<QuerySet []>
Enter fullscreen mode Exit fullscreen mode

pk=1 の子供の選択肢がないのを確認する


choise テーブルの中身を入れる

質問の選択肢と投票数がないので作る。

>>> 
q.choice_set.create(choice_text='I got a raise', votes=0)

q.choice_set.create(choice_text='I made a company', votes=1)

q.choice_set.create(choice_text='My Wife is beatuful', votes=10)

q.choice_set.all()
<QuerySet [<Choice: I got a raise>, <Choice: I made a company>, <Choice: My Wife is beatuful>]>
Enter fullscreen mode Exit fullscreen mode

回答を 3 つ作った。


Django Admin で確認

Image description

残念ながらここでは今の所子供テーブルまでは見れないようだ


detail で確認

Image description

{{ question }}
Enter fullscreen mode Exit fullscreen mode

question しかないので中は見えない。

これを書き換える。


<h1>{{ question }}, {{ question.question_text }}</h1>
{{  question.choice_set.all }}
<ul>
{% for choice in question.choice_set.all %}
    <li>{{ choice }},  {{ choice.choice_text }}</li>
{% endfor %}
</ul>
Enter fullscreen mode Exit fullscreen mode

Image description

question でも question.question_text でも
question テーブルの question_text の内容が表示される。

自動的にテキストが読み込まれることになるのか?テーブルの最初のカラムだからか?

また、question.choice_set.all でシェルモードと同じように QuerySet で子供テーブルの中身が表示できた。

for で中身を回して question と同様に
choice でも choice.choice_text で choice テーブルの choice_text が表示されている

これで question の子供テーブルの choise の中身も表示できた。


まとめ

question.choice_set.all で子供テーブルの中身が出せて

{% for choice in question.choice_set.all %}
    <li>{{ choice }}
{% endfor %}
Enter fullscreen mode Exit fullscreen mode

for/endfor で回すことで 中身が展開できる。

今後

https://docs.djangoproject.com/en/4.0/intro/tutorial04/

次は form の章だが、Django の Template で Form を書くのはないと思うので、REST FRAMEWORK に戻ろうかと思っている

https://dev.to/kaede_io/django-rest-framework-tutorial-dezuo-tutaapurinosiriaraizazhou-riwoque-ren-suru-316b

シリアライザを短く書いて、リクエスト叩いて登録できる形に持っていくところが残っているので。

💖 💪 🙅 🚩
kaede_io
kaede

Posted on April 17, 2022

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Choosing the Right Relational Database
undefined Choosing the Right Relational Database

November 29, 2024

Can a Solo Developer Build a SaaS App?
undefined Can a Solo Developer Build a SaaS App?

November 29, 2024

This Week In Python
python This Week In Python

November 29, 2024