シ〜らかんす

プログラミングとか、カメラとか。

【Django】モデルの複数カラムをセットでユニークに設定する方法

いつもやり方忘れてしまうので、メモ。

単一カラムに対するユニーク設定

djangoでモデルのあるカラムをユニークにするには、 以下のようにモデル定義のオプション引数として unique=True を渡してやればOKです。

from django.db import models


class SomeModel(models.Model):
    column1 = models.CharField(max_length=255, unique=True)

複数カラムセットでユニークにする設定

カラム一つに対してユニーク設定をかけたい場合は上記で問題ありませんが、「複数カラムセットでユニーク」な設定をかけたい場合は、以下のように書く必要があります。

from django.db import models


class SomeModel(models.Model):
    column1 = models.CharField(max_length=255)
    column2 = models.CharField(max_length=255)

    class Meta:
        unique_together = ("column1", "column2",)

参考にしたサイト

https://docs.djangoproject.com/en/2.1/ref/models/fields/#django.db.models.Field.unique

https://stackoverflow.com/questions/2201598/how-to-define-two-fields-unique-as-couple