ほんじゃらねっと

ダイエット中プログラマのブログ

モデルのフィールドを組み合わせで一意にする

djangoは複合キーが使えないらしいので、代わりの機能を探したら
開発版で追加されたunique_togetherというMetaオプションを使えば
良いらしいことが分かった。


例えばあるモデルでユーザーとブックマークの組み合わせを一意にする場合は
こんな感じかな?


models.py

...
class UserBookmarkMap(models.Model):
user = models.ForeignKey(User)
bookmark = models.ForeignKey(Bookmark)
insert_date = models.DateTimeField("作成日")
class Meta:
unique_together = (("user", "bookmark"),)
...


Mysqlで作成したテーブルを見ると、両列の列属性にMULが入っていたので、
うまくいってそう。