Djangoさんで主キーをUUIDに。

 普通に普通のWebアプリ動かしていると必要性をあまり感じないと思いますが、私がやっている方面だともろもろと事情がありましてオフラインで複数の端末を動かして、後でデーターを統合したいとかなんとかというケースがあったりなかったりします。いや、あるんですけど。

 そういう時にちょっと気を遣わなければいけないのが主キーが連番になっちゃってる問題です。久しぶりに書くけどいわゆるサロゲートキーというヤツ。Djangoさんでは普通に使うとサロゲートキーが採用されますし、複合主キーも使いません。

 でまぁ、どうすればいいのかはわかってはいながら面倒なので統合時に帳尻を合わせるようなスクリプトを書いて用意しておいたり、適当にゴニョゴニョしたりしてやり過ごしていたのですけど、Django 1.8系から正式にUUIDを主キーに用いることがサポートされておりますし、1.8系がLTSとして指定されているので今後しばらく使うつもりであるから手を付けてみました。と言っても、正式にサポートされておりますからサクっと完了するのですけど。

 Model field reference | Django documentation | Django (UUIDField)

 はい、Djangoさんの方でField typeとして用意してくださっているのでModel定義でidをUUIDFieldにするだけです。これでよしなにしてくださいます。ありがとうございますありがとうございます。

 Model field reference | Django documentation | Django (ManyToManyField.through_fields)

 ただまぁ、少しだけ注意する点もあって、ManyToManyリレーションを用いる際には中間テーブルを自前で管理する必要があります。そのままだと普通にサロゲートキーが適用されちゃう。

 とはいえ、たったこれだけのことですっかりと使えるようになるので大変助かります。UUIDさんにはこれ以外の件でもお世話になっているのですごくすごく感謝しておりますよ、大好きです。