2012-01-21 68 views
0

我正在構建一個小型網站主機服務,用戶可以在其中創建網站並插入網頁。如何使用Django爲關係設置唯一字段?

因此,我創建了以下類:

class Website(models.Model): 
    account = models.CharField(max_length=30, unique=True) 
    custom_domain = models.CharField(max_length=130, blank=True, unique=True) #optional 
    title = models.CharField(max_length=80) 

class Page(models.Model): 
    website = models.ForeignKey(Website) 
    title = models.CharField(max_length=80) 
    slug = models.CharField(max_length=80, unique=True) 
    content = models.TextField() 

我要讓外地「塞」獨特之處在於網站和頁面類之間的關係。這樣,兩個網站可以有一個相同的slu page頁面。像這樣:

http://mysite.com/website_1/contact_page 
http://mysite.com/webiste_2/contact_page 

但是該字段選項'唯一'是爲此目的而設計的。

像這樣的情況下的任何提示或最佳做法?

回答

1

放棄slug列的獨特要求,並在Page的Meta 類中添加unique_together

class Page(models.Model): 
    website = models.ForeignKey(Website) 
    title = models.CharField(max_length=80) 
    slug = models.CharField(max_length=80) 
    content = models.TextField() 

    class Meta: 
     unique_together = ('website', 'slug') 
+0

感謝您的幫助! –

+0

沒問題。僅供參考:Django也有內置的模塊字段:https://docs.djangoproject.com/en/dev/ref/models/fields/#slugfield – sdolan

+0

再次感謝您!這是及時的。 –

相關問題