有没有办法在 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_id,volume_number但它不起作用。
unique = True
journal_id
volume_number
有一个名为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',)