2022年7月の記事一覧
Django_models.ForeignObjectとは #230日目
ForeignObjectはForeignKeyの親クラスにもなっているもので、モデル同士で多対一の関係を作ります。特徴として、複数列でテーブル同士を関連づけることが可能です。
先にForeignObjectをフィールドに使ったモデルの記述方法を例示します。「TaskResult」というモデルに、task_idカラムでリレーションしています。
from django_celery_result
Django_モデルのForeignKeyとManyToManyを図で理解する #227日目
DjangoではForeignKey (多対一) やManyToMany (多対多) といったフィールドを使って、モデル同士を紐づかせることが可能です。
ただ、私自身いくつか記事を書いてきましたが、ForeignKeyもManyToManyも少しイメージが持ちにくく、いざ使おうとすると「ん?」と混乱しやすいです。
そこでこれらのフィールドのイメージを図で整理して、理解を深められるようにしたいと
Django_ForeignKeyのデータを更新 / save()とcreate()の違い #225日目
本日、ここ1-2週間ほどWebツールの機能修正に挑戦していたのですが、(ローカル環境で)遂にそれが修正完了しました…!週明けにプルリクを出すので手戻りがあるかもしれませんが、実務のWebツールで、狙った通りの挙動ができたので何だか嬉しかったです。
ただ実際は、コードの修正自体は30-40分程度のもので、エラーを起こしている箇所の特定の方が大変でした(最終的に自力ではできなかったです)。
このエ
Django_[transaction.atomic]を使って一連の処理をトランザクション化 #219日目
トランザクションとは、連続した複数のデータベース操作を一つにまとめたものです。処理が最後まで完了したらレコードの登録・変更・削除をまとめてデータベースに反映(コミット)し、エラー等で途中で失敗した場合はその途中までの処理は全て無かったことにしてくれます(ロールバック)。
ちなみにDjangoのデフォルトはトランザクションではなく、オートコミットというモードです。これはsave()やdelete(
Django_[bulk_create]メソッドでDBにオブジェクトを一括作成 #216日目
Djangoではモデルを通してオブジェクトをデータベースに登録することが可能です。基礎的なコードとしては、以下のようにcreate()を使います。
Model.objects.create()
これでデータベースに問題なく登録されますが、膨大な数を処理しようとすると、これのままでは処理に時間がかかる、という弱点があります。
膨大な数を処理とは、例えば以下のように1回ずつcreate()しなが
Django_[save_model]メソッドで、モデルの保存時の追加処理を設定する #215日目
DjangoのAdminサイトではモデルにデータを追加したり削除したりできてとても便利ですが、このデータ保存時に追加の処理を設定することも可能です。
処理内容と、それを保存するコードをそれぞれ記載します。
前後に処理を挟んで、任意のタイミングで保存するには「save_model関数」をオーバーライドすればOKです。save_modelメソッドには、オブジェクトを追加するか変更するかに基づいて、
Django_[prefetch_related]で外部参照データを指定する方法 #214日目
以前にご紹介したprefetch_relatedの追加情報です。
DBに何度もアクセスしてデータを取り出すの非効率なため、Djangoでは可能な限り少ないクエリでデータを取得するための「prefetch_related()」が用意されています。
これは指定したモデルに外部参照データがある場合に、1回のクエリで外部参照データ分まで取得してくれる機能を持っています(普通に取得すると指定したモデル&
Django_インポートせずにモデルを指定する方法 #213日目
DjangoでForeignKeyを使ってモデルを指定する際、他ファイルからインポートせずにモデルを指定したい、という場面が出てきます。
これはモデルの数が膨大になってきたとき直面する場面で、愚直にimportするとそれだけでコード量が膨大になり、importの関係も複雑になり、コンフリクトが起きて上手く機能しないことが増えたりします。
そこでDjangoでは、モデルをimportなしで指定す
Django_ModelAdminを使って管理画面を編集 #212日目
Djangoの管理サイトは、Djangoで作成したWebアプリのデータを管理するための組み込みアプリケーションです。利用するのは主に管理者(administrator)や開発者です。
この管理サイトはとても便利で、ここからモデルに対応したデータベースのレコードを操作すること(CRUD)や、ユーザーのパスワード変更、データ検索、ソート、フィルターなど様々な機能が備わっています。
本日は参考記事の