在django中为这种情况创建模型的最佳方法是什么?

时间:2013-08-27 00:34:14

标签: python django django-models

我正在创建一个关于某些专业人士提供的服务的网站。每位专业人士都会创建自己的个人页面,并列出他提供的服务以及价格。

但是,他有一些有限的服务类型可供选择。专业人士无法创建新的服务类型 - 这是管理员的特权。专业人员列出的每项服务必须具有某种预先确定的类型,而且他不能拥有相同类型的服务。

到目前为止,这就是我在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项服务?

1 个答案:

答案 0 :(得分: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