2012-01-23 64 views
2

というデータベースレベルで複合キーを強制する必要があります。複合キーは5つの列で構成されています。ジャンゴでは、私は、擬似複合キーの操作を行うことができますdjangoで化合物の複数のキーを強制する

unique_together = ("col1", "col2", "col3", "col4", "col5") 

しかし、テーブルに挿入されるすべてのデータは、PythonスクリプトからのDjangoの外にあります。この複合主キーが強制されていないと、スクリプトは単純に機能しません(スクリプトレベルでこの問題に対処する必要はありません)。

私はこの問題についてどうやってやりますか、ここでこれを達成するためにはちょっとだけ質問から外れますか?

アップデート:私はこのは、データベースレベルで適用であることをコメントから参照してください。ここで自動インクリメントのプライマリキーを取り除く方法もありますか?列自体は一意ではないことに注意してください。

+2

なぜ「unique_together」は強制されませんか?これはデータベースレベルで設定されているので、フィールドの組み合わせを複製すると 'IntegrityError'が返されます。あなたがする必要があるのは、例外をキャッチして適切に対応することだけです。 –

答えて

6

これにはunique_togetherを使用できます。これは、一緒に考慮した場合一意である必要がありますフィールドのリストのリストである

unique togetherドキュメント(私の強調)のDjangoのドキュメントから

。これはDjangoの管理者で使用され、データベースレベルで適用されます(つまり、適切なUNIQUE文がCREATE TABLE文に含まれています)。

関連する問題