複合主キーを持つレガシーdbテーブルがあります。そのテーブルを使用するコードが記述されているため、代理キーを含むように構造を変更できるとは思わない。また、Djangoでは、主キー(非複合)がないため、このテーブルを使用できません。
Djangoモデルは複合主キーをサポートしていますか?サポートしていない場合、テーブルの構造を変更せずに回避策はありますか?
追伸私はpostgresqlを使用しています。
以下のコードを試してください:
class MyTable(models.Model):
class Meta:
unique_together = (('key1', 'key2'),)
key1 = models.IntegerField(primary_key=True)
key2 = models.IntegerField()
または、一意の混合フィールドのみが必要な場合:
class MyTable(models.Model):
class Meta:
unique_together = (('key1', 'key2'),)
key1 = models.IntegerField()
key2 = models.IntegerField()
編集:3つの列がある場合、このアプローチには問題があることに注意したいと思います。更新クエリは、一緒に一意であり、明らかに失敗するフィールドを更新しようとするため(「SET」の直後にpkフィールドを置く)、機能しません。