Django でオブジェクトを作成する
この記事では、モデルとは何か、および create()
メソッドを使用してオブジェクトを作成する方法について説明します。 Django で save()
メソッドを使用する方法を見ていきます。
Django で create()
メソッドを使用してオブジェクトを作成する
Django のモデルは、データベース内の単一のテーブルを表すクラスです。 アプリケーションの各タイプのデータをそのモデルで表すことができます。
次に、各モデルがデータベース内の 1つのテーブルにマップされます。
たとえば、4つのモデル、記事、ユーザー、著者、書籍がある場合、データベースには 4つのテーブルがあります。 1つのモデルが各テーブルをマップします。
データベースでモデルのオブジェクトを作成する方法を見てみましょう。
Python シェルを使用して新しいオブジェクトを作成します。 Django プロジェクトのルートにいることを確認するには、admin を使用する必要があります。
ls
出力:
db.sqlite3 manage.py products trydjango
ここで、別のコマンドを実行します。 したがって、このコマンドを実行すると、Django プロジェクトのすべてが Python インタープリター内で機能します。
Enter を押すと通常の Python インタープリターが表示されますが、それは次のコマンドを実行できるからではありません。
python manage.py shell
products
モデルを models.py
ファイルからインポートしました。 Enter を押すと、現在のシェルで Product
モデルを使用できます。
from products.models import Product
定義されたモデルからすべてのオブジェクトを取得する組み込みの Django コマンドがあります。
Product.objects.all()
これで、アイテムが 1つしかないことがわかります。これは、保存したアイテムが 1つだけであるためです。
<QuerySet[<Product: Product object (1)>]>
さらにオブジェクトを表示したい場合は、次のコマンドを使用してさらにオブジェクトを作成するだけです。
Product.objects.create()
Product
モデルに 4つのフィールドがあるとします。 新しいオブジェクトを作成するには、これらの 4つのフィールドを create()
メソッドに渡す必要があります。
次のコマンドを記述して、新しいオブジェクトを作成しましょう。
Product.objects.create(
title="New product",
description="Another one",
price=1222,
summary="The best product",
)
このコマンドを書いた後、Enter を押すと、新しいオブジェクトが作成されます。
<Product: Product object (2)>
したがって、すべてのオブジェクトを取得しようとすると、新しく作成された別のアイテムが表示されます。
Product.objects.all()
これで、クエリ リストの 2 番目の項目が表示されます。
<QuerySet[<Product: Product object (1)>,<Product: Product object (2)>]>
管理パネルに移動すると、そこに新しいオブジェクトが表示されます。
次に、save()
メソッドの使用方法を見ていきます。 次のコードがあり、定義されたモデルのすべてのフィールドを保存する必要があるとします。
モデル クラスにすべてのフィールドを渡し、save()
メソッドを使用してこれを保存するオブジェクトを作成する必要があります。
上記のコードで product_id
を定義したので、ID を使用して製品にアクセスできるようになりました。 product_id
では、primary_key
を True
に設定します。
save()
メソッドは 2つの条件で機能します。つまり、指定された product_id
がデータベースに既に存在する場合、オブジェクトは異なるフィールド値で更新されます。
save()
メソッドが product_id
で True
に設定された primary_key
属性を検出しない場合、または指定された ID がデータベースに存在しない場合、エラーが発生します。 Product.objects.create()
を使用すると、新しいオブジェクトのみを挿入できます。
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn