Django 3. 基本概念2(モデル、Query Set)


1. Models
この文書では、モデルがデータベース・フレームワークを作成する役割を果たします.
class Customer(models.Model):
    name=models.CharField(max_length=200, null=True)
    phone=models.CharField(max_length=200, null=True)
    email=models.CharField(max_length=200, null=True)
    date_created=models.DateTimeField(auto_now_add=True, null=True)
    # 데이터 개체를 출력할 때 name속성의 값으로 출력해주는 메소드
    def __str__(self):
        return self.name
モデルはクラスとして作成され、各プロパティはデータ・テーブルの列になります.モデルを作成する場合は、移行と呼ばれるデータベースに反映する必要があります.
入力python manage.py makemigrationsは変更内容を示し、入力python manage.py migrateは変更内容をデータベースに反映します.
adminは、作成したモデルをインポートし、格納されたデータを管理します.pyのadmin.site.register(モデル名)を入力します.
デフォルト入力を選択するためにデータを作成する必要がある場合は、次のようにオプションを作成し、フィールドにオプション=変数名オプションを選択します.
class Order(models.Model):
    STATUS=(
        ('Pending', 'Pending'),
        ("Out for delivery", "Out for delivery"),
        ("Delivered", 'Delivered'),
    )
    ...
    status=models.CharField(max_length=200, null=True, choices=STATUS)
通常、データフィールドの作成時に1:N関係が作成されますが、N:M関係が必要なデータもあります.このため、本明細書では、フィールドフォーマットManyToManyFieldを用いる.
class Tag(models.Model):
    name=models.CharField(max_length=200, null=True)
    
    def __str__(self):
        return self.name

class Product(models.Model):
    CATEGORY=(
        ('Indoor', 'Indoor'),
        ('Outdoor', 'Outdoor'),
    )
    name=models.CharField(max_length=200, null=True)
    price=models.FloatField()
    category=models.CharField(max_length=200, null=True, choices=CATEGORY)
    description=models.CharField(max_length=200, null=True, blank=True)
    date_created=models.DateTimeField(auto_now_add=True, null=True)
    # Product 테이블과 Tag 테이블이 N:M관계이다.
    tags=models.ManyToManyField(Tag)
2. QuerySet
クエリー・セットは、データベースからインポートされたオブジェクトのセットです.クエリー・セットでは、1つ以上のフィルタを使用できるため、条件に応じてクエリーの結果を減らすことができます.使用する形式は次のとおりです.queryset = Customer.objects.all()変数名=モデル名.モデルオブジェクトのプロパティ.メソッドの順序に従って作成されます.メソッドのタイプはたくさんありますが、すべてのオブジェクトのall()をインポートし、条件に合致するオブジェクトのget()をインポートし、条件に合致するすべてのオブジェクトのfilter()をインポートします.
オブジェクト1.オブジェクト2 setは、オブジェクト1内のオブジェクト2に対応するすべてのクエリーセットを生成します.
テーブルで参照される外部キーテーブルのフィールドを取得するには、filter(外部キーフィールド名=「フィールド値」)を使用します.ここに下線が2本あります.(Double Underscore)