実践Django Pythonによる本格Webアプリケーション開発
を読み始めたマスタカです。
3章まで読んで不明点をまとめた
Django
・シェル
python manage.py shell
でシェル上で対話的に処理が確認できる
・adminユーザの例
>>> from django.contrib.auth.models import User
>>> users = User.objects.all()
>>> users
・ModelからFormを作る
forms.ModelForm
を継承することで実施できる
https://kosuke-space.com/django-modelform
・pygments_renderer
コードスニペットを入れれる
・verbose_name
管理画面で使う名前
https://codor.co.jp/django/how-to-use-verbose-name
データベース
・related_nameとrelated_query_name
アクセスする名前を変更できる
https://thinkami.hatenablog.com/entry/2020/06/14/145912
>related_nameは、関連オブジェクトの属性であり、外部キーを含むモデルに「後方」に移動できます。たとえば、ModelAにmodel_b = ForeignKeyField(ModelB, related_name=’model_as’)のようなフィールドがある場合、これにより、ModelAインスタンスに関連するModelBインスタンスにアクセスできます
>related_query_nameは、Django querysetsで使用します。外部キー関連フィールドの逆リレーションシップでフィルタリングできます
relatead_nameはアクセスでrelated_query_nameはfilterとかに使えるってことらしい
https://www.web-dev-qa-db-ja.com/ja/python/django%E3%81%AE-%27relatedname%27%E5%B1%9E%E6%80%A7%E3%81%A8-%27relatedqueryname%27%E5%B1%9E%E6%80%A7%E3%81%AE%E9%81%95%E3%81%84%E3%81%AF%EF%BC%9F/830921444/
・クエリ
>>> Snippet.objects.all()[:1]
(0.000) SELECT “snippets”.”id”, “snippets”.”title”, “snippets”.”code”, “snippets”.”description”, “snippets”.”created_by_id”, “snippets”.”created_at”, “snippets”.”updated_at” FROM “snippets” LIMIT 1; args=()
>>>
>>>
>>> Snippet.objects.all()[1]
(0.000) SELECT “snippets”.”id”, “snippets”.”title”, “snippets”.”code”, “snippets”.”description”, “snippets”.”created_by_id”, “snippets”.”created_at”, “snippets”.”updated_at” FROM “snippets” LIMIT 1 OFFSET 1; args=()
エラー
・NameError: name ‘login_required’ is not defined
以下のimport文で対応できる
from django.contrib.auth.decorators import login_required
https://wonderwall.hatenablog.com/entry/2018/03/25/180000
・no such table: snippets
python manage.py makemigrations && python manage.py migrate