【问题标题】:What's the best way to create models for this situation in django?在 django 中为这种情况创建模型的最佳方法是什么?
【发布时间】:2013-08-27 00:34:13
【问题描述】:

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

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

到目前为止,这就是我在 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 只能拥有一个特定服务类型的服务?

【问题讨论】:

标签: python django django-models


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多