見出し画像

Django_データの組み合わせが一意になるようmodelに制約を付ける #384

Djangoの機能に関する簡単なメモです。

Djangoのモデルでは、データベースのスキーマをPythonのクラスとして表現します。各モデルクラスはデータベースのテーブルを表し、属性はそのテーブルのフィールドを表します。

そしてモデルにはMetaクラスというものを定義できます。これはモデルのメタデータを指定するためのものです。例えば、テーブル名やデフォルトのソート順、パーミッションなどを指定できます。

class MyModel(models.Model):
   field1 = models.CharField(max_length=100)
   field2 = models.CharField(max_length=100)

   class Meta:
       verbose_name = 'サンプル用モデル'
       db_table = 'my_sample_model'
       constraints = [
           models.UniqueConstraint(fields=['field1', 'field2'], name='unique_field1_field2')
       ]

constraintsオプションは、モデルにデータベースレベルの制約を追加するためのものです。記載しているUniqueConstraintはその一つで、指定されたフィールドの組み合わせがユニークであることを保証します。つまり、同じ値の組み合わせが二度と現れないようにできます。

UniqueConstraintには重要なパラメータが2つあります。

- fields:制約を構成するフィールド名のリストまたはタプルです。組み合わせのユニークさをチェックするフィールドを指定します。

- name:制約の名前です。この名前はデータベーススキーマ内でユニークでなければなりません。

上記のサンプルコードでは、field1とfield2の組み合わせがユニークであることを保証しています。


ここまでお読みいただきありがとございました!

この記事が気に入ったらサポートをしてみませんか?