2010-11-17 24 views
1

我工作的一個項目相關聯,其中我有車型相同的分機號碼:客戶端,用戶和擴展,只是爲了讓這個簡單的。 用戶必須與一個客戶端,以便有一個分機號碼相關聯。 用戶可以有擴展,說,100和101 其他用戶,與其他客戶端相關聯,可以有相同的擴展100和101 所以,擴展是不是在我的數據庫獨特的,所以它允許用戶有兩個相同當我在政府中添加分機號碼時,這是錯誤的。如何檢查要添加的分機號碼是否已包含在此用戶中?Django的:有與客戶相關聯的唯一的分機號碼,但與其他客戶端

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) 

回答

5

使用Meta.unique_togetheruserExtensionnumber

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

好吧,我在正確的軌道上。現在需要嘗試。謝謝。 – chiurox 2010-11-18 12:31:34

+0

它的工作原理,但可以在同一客戶端下不少用戶。同一客戶端下的這些用戶不能有相同的分機號碼。我是否必須在Extension to Client中創建另一個外鍵,並在unique_together中包含「客戶端」? 'Client'和'User'之間存在 – chiurox 2010-11-18 12:58:28

+0

怎樣的關係? – 2010-11-18 14:13:06