2013-12-10 2 views
1

Возьмем следующую модель:Джанго уникальные отношения не уникальный стол

class Foo(models.Model): 
    bar = models.ForeignKey(Bar) 
    name = models.CharField(max_length=30) 
    #... 

так, что это делает подключить Foo модели к модели Bar и каждая Foo модель имеет name.

Как я могу сделать так, чтобы имя было уникальным только для подключенной модели Bar ??

примечание: unique=True не будет работать, потому что имя не нужно быть уникальным для всей таблицы, это просто, что не может быть повторяющихся имен в конкретном Bar например

пример:

позволяет сказать, что a и b являются экземплярами Bar

#the following is allowed 
c = Foo(bar = a, name="foobar",...) 
d = Foo(bar = b, name="foobar",...) 
e = Foo(bar = b, name="barfoo",...) 
#the following would not be allowed because 
#an instance already exists in `a` with the name "foobar" 
f = Foo(bar = a, name="foobar",...) 
+2

Добавь собственное подтверждение в этом поле? – yuvi

ответ

3

Может быть, вы об этом говорить: https://docs.djangoproject.com/en/dev/ref/models/options/#unique-together

class Meta: 
    unique_together = (('bar', 'name'),) 
+0

Вы можете сделать это с отношением внешнего ключа, чтобы сравнить таблицу и значение? Если так, то это правильно –

+0

@RyanSaxe да, работа с fk – ndpu

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