LoginSignup
12
10

More than 5 years have passed since last update.

Djangoのモデルで任意のキーをプライマリキーにする

Posted at

Djangoではモデルで特に何も指定しないと
プライマリキー名はid、型は整数(integer)、1からの連番で生成される。

ここでは、モデルのプライマリキーとして
UUID(Universally Unique Identifier)を利用する例を示す。

model.py
from django.db import models
import uuid

class Sample(models.Model):
    sampleId = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

ポイントとなるのは下記の、 primary_key=True の部分、
ここでsampleIdがプライマリキーであることを明示している。

sampleId = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

モデルのオブジェクトが生成されたタイミングで自動的に割り当てられて欲しいので、
default=uuid.uuid4 を指定。

さらに、プライマリキーをあまり考えなしに変更すると
DBの整合性が壊れそうなので editable=False を指定
(ここは取り越し苦労の可能性は高いが......)

12
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
10