1. ホーム
  2. django

[解決済み] 2つのフィールド「unique」をカップルとして定義する方法

2022-02-18 12:05:18

質問

Djangoでいくつかのフィールドをユニークとして定義する方法はありますか?

私は(雑誌の)巻数のテーブルを持っており、同じ雑誌に複数の巻数番号をつけたくありません。

class Volume(models.Model):
    id = models.AutoField(primary_key=True)
    journal_id = models.ForeignKey(Journals, db_column='jid', null=True, verbose_name = "Journal")
    volume_number = models.CharField('Volume Number', max_length=100)
    comments = models.TextField('Comments', max_length=4000, blank=True)

を配置しようとしたのですが unique = True フィールドの属性として journal_idvolume_number が、うまくいきません。

どうすればいいですか?

という簡単な解決策があります。 ユニーク・トゥギャザー これは、まさにあなたが望むことを実現するものです。

例えば

class MyModel(models.Model):
  field1 = models.CharField(max_length=50)
  field2 = models.CharField(max_length=50)

  class Meta:
    unique_together = ('field1', 'field2',)

そして、あなたの場合

class Volume(models.Model):
  id = models.AutoField(primary_key=True)
  journal_id = models.ForeignKey(Journals, db_column='jid', null=True, verbose_name = "Journal")
  volume_number = models.CharField('Volume Number', max_length=100)
  comments = models.TextField('Comments', max_length=4000, blank=True)

  class Meta:
    unique_together = ('journal_id', 'volume_number',)