2014-11-03 6 views
1

고유해야하는 테이블 항목에 대해 keyword 필드를 만듭니다. 이제 테이블 항목을 고유하게 만드는 방법을 알았지 만 M2M 항목을 고유하게 만들어서 다시 사용하지 않도록하려면 어떻게해야합니까?M2M 항목을 고유하게 만드는 방법

class Keyword(models.Model): 
    name = models.CharField(max_length=100, unique=True, blank=False) 

class MainEntity(models.Model): 
    keywords = models.ManyToManyField(Keyword, default=None, null=True, blank=True, verbose_name='Keyword') 

그래서 예를 들어 내가 같은 Keyword을 가지고 다른 MainEntity 항목의 무리를 만들 수 있지만 분명히 내가를 만들 수 없다는 사실을 제외하고 작동 : 여기

내가 지금까지 가지고있는 코드입니다 Keyword이므로 unique입니다. 그러나 동일한 키워드의 사용을 어떻게 제한합니까?

+0

"동일한 키워드의 사용을 어떻게 제한합니까?" 당신이 ForeignKey 관계를 원하는 것처럼 조금 냄새가 난다? – OldTinfoil

+0

그래서 기본적으로'MainEntity'를 가리키는'Keyword'에 ForeignKey가 있어야합니까? – JavaCake

+0

의존성 - 'MainEntity'는 둘 이상의'키워드 '를 가질 수 있습니까? – OldTinfoil

답변

0

좋아, 답변에 찔러 보러 갈거야. 다음은 독특한 Keywords, 즉 단 하나의 MainEntity을 참조 할 수 있습니다 보장하지만 MainEntity 여러 키워드를 가질 수 있습니다

class Keyword(models.Model): 
    name = models.CharField(max_length=100, unique=True, blank=False) 
    main_entity = models.ForeignKey(MainEntity) 

class MainEntity(models.Model): 
    ... 

(나는 MaintEntity 간결하고 당신을 위해 박탈 된 다른 필드가 추정 "..."을 해당 필드로 바꿉니다^_ ^)

관련 문제