2013-08-27 64 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

谢谢。这正是我想到的。 –

相关问题