2013-08-27 104 views
0

我正在創建一個關於某些專業人員提供的服務的網站。每個專業人員都會創建自己的個人頁面並列出他提供的服務和價格。在django中爲這種情況創建模型的最佳方式是什麼?

但是,他有一些有限的服務類型可供選擇。專業人員無法創建新的服務類型 - 這是管理員的特權。專業列表必須具有某種預定類型的每種服務,並且他不能有相同類型的服務。

到目前爲止,這是我在models.py:

# Created and edited only by site administration 
class Service(models.Model): 
    url_name = models.CharField(max_length=100, primary_key=True) # to use in URLs 
    name = models.CharField(max_length=200) 
    description = models.TextField() 

    def __unicode__(self): 
     return self.name 

class Master(models.Model): 
    name = models.CharField(max_length=200) 
    description = models.TextField() 

    def __unicode__(self): 
     return self.name 

class MasterService(models.Model): 
    master = models.ForeignKey(Master) 
    service = models.ForeignKey(Service) 
    price = models.PositiveIntegerField(blank=True) 

我如何可以編輯該模型以這樣一種方式,Django會「知道」每個師傅只能有一個1個服務某些服務類型?

+0

我認爲這是你要找的東西:http://stackoverflow.com/questions/232435/how-do-i-restrict-foreign-keys-choices-to-related-objects-only-in- django – Paul

回答

1

嘗試unique_together

class MasterService(models.Model): 
    master = models.ForeignKey(Master) 
    service = models.ForeignKey(Service) 
    price = models.PositiveIntegerField(blank=True) 

    class Meta: 
     unique_together = ('master', 'service') 

這種約束將在數據庫級別強制執行,所以不會有可能一個servicemaster不止一次關聯。請參閱docs

+0

謝謝。這正是我想到的。 –

相關問題