Django: Наличие уникальных добавочных номеров, связанных с клиентом, но одинаковых добавочных номеров, связанных с другим клиентом - PullRequest
1 голос
/ 18 ноября 2010

Я работаю над проектом, в котором у меня есть модели: клиент, пользователь и расширения, просто чтобы сделать это проще. Пользователь должен быть связан с одним клиентом, чтобы иметь добавочный номер. Пользователь может иметь расширения, скажем, 100 и 101. Другой пользователь, связанный с другим клиентом, может иметь такие же расширения 100 и 101. Итак, Расширения не являются уникальными в моей базе данных, поэтому они позволяют Пользователю иметь два идентичных добавочных номера, когда я добавляю его в Администрирование, что неправильно. Как проверить, что добавляемый добавочный номер уже не содержится у этого пользователя?

class Extension(models.Model):
    user = models.ForeignKey(User, verbose_name=u"User")
    date_created = models.DateTimeField(auto_now_add=True, auto_now=True)
    number = models.CharField(max_length=16, unique=False)
    kind = models.SmallIntegerField(choices=KIND_CHOICES,default=KIND_UNKNOWN)

Класс User является классом Django по умолчанию.

class Client(models.Model):
    name = models.CharField(u"Nome", max_length=64)
    last_update = models.DateTimeField(null=True, blank=True)
    last_inbound_call  = models.DateTimeField(null=True, blank=True)
    last_outbound_call = models.DateTimeField(null=True, blank=True)
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=16)

1 Ответ

5 голосов
/ 18 ноября 2010

Используйте Meta.unique_together на user и number в Extension.

class Extension(...):
   ...
  class Meta:
    unique_together = (('user', 'number'),)
...