小编典典

如何将两个“唯一”字段定义为一对

all

有没有办法在 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但它不起作用。


阅读 206

收藏
2022-03-13

共1个答案

小编典典

有一个名为unique_together的简单解决方案可以满足您的需求。

例如:

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',)
2022-03-13