반응형
두 필드를 "고유 한"커플로 정의하는 방법
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
반응형
'Programming' 카테고리의 다른 글
자식 체리 픽 중단? (0) | 2020.03.04 |
---|---|
IEnumerable 또는 List가 아닌 ICollection을 사용하는 이유 (0) | 2020.03.03 |
특성 함수를 재정의하고 재정의 된 함수에서 호출하는 방법은 무엇입니까? (0) | 2020.03.03 |
복잡한 Git 브랜치 이름으로 모든 Git 명령이 중단됨 (0) | 2020.03.03 |
이진 파일 읽기 및 각 바이트 반복 (0) | 2020.03.03 |