Programming

두 필드를 "고유 한"커플로 정의하는 방법

procodes 2020. 3. 3. 23:10
반응형

두 필드를 "고유 한"커플로 정의하는 방법


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_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',)

장고 2.2+

대신 옵션 UniqueConstraint과 함께 사용하십시오 constraints. unique_together앞으로 더 이상 사용되지 않을 수있는 것보다 더 많은 기능을 제공합니다 .

예를 들면 다음과 같습니다.

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:
        constraints = [
            models.UniqueConstraint(fields=['journal_id', 'volume_number'], name='name of constraint')
        ]

참고 URL : https://stackoverflow.com/questions/2201598/how-to-define-two-fields-unique-as-couple



반응형