2014-11-03 4 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') 

Так что этот пример работает, за исключением того, что я могу создать кучу других MainEntity элементов, который имеет тот же Keyword, но очевидно, что я не могу создать дубликат Keyword, следовательно, его unique. Но как ограничить использование одного и того же ключевого слова?

+0

Что вы подразумеваете под« Как ограничить использование одного и того же ключевого слова »? Понюхает немного, как будто вы хотите отношения ForeignKey? – OldTinfoil

+0

Итак, в основном мне нужно иметь ForeignKey в моем «ключевом слове», который указывает на «MainEntity»? – 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 есть другие поля, которые были оголенные ради краткости и вы «замените« ... »этими полями^_ ^)

Смежные вопросы