0

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

但是,他可以选择的服务类型有限。专业人员不能创建新的服务类型——这是管理员的特权。专业人员列出的每项服务都必须是某个预先确定的类型,并且他不能必须具有相同类型的服务。

到目前为止,这就是我在 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 将“知道”每个 master 只能具有某种服务类型的 1 个服务?

4

1 回答 1

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')

此约束将在数据库级别强制执行,因此不可能将 aservice与 a关联master多次。请参阅文档

于 2013-08-27T01:38:02.107 回答