【发布时间】:2019-01-25 09:33:30
【问题描述】:
我有一个用户模型,其外键指示用户所属的组。用户可以订购服务。服务的价格取决于它是哪种服务以及用户属于哪个组。服务和组的数量可以更改,但我始终需要为每个可能的服务组组合定价。
class User(models.Model):
name = models.CharField()
group = models.Foreignkey(Group)
class Group(models.Model):
group_name = models.CharField()
class Order(models.Model):
user = models.Foreignkey(User)
type = models.Foreignkey(Service)
class Service(models.Model):
type = models.CharField()
似乎我不能简单地将价格字段添加到服务模型中,因为相同服务的价格与组一样多。
问题 1: 我应该将价格存储在哪种模型中? 我在想以下几点:
class Price(models.Model):
service = models.Foreignkey(Service)
group = models.Foreignkey(Group)
price = models.DecimalField()
这是一个明智的策略吗?
问题 2:只有管理员才能创建新组或服务,但是当发生这种情况时,我需要确保在 Django 的管理界面中以某种方式在创建新服务时,表单也为每个组询问不同的价格,反之亦然,如果创建了一个新组,表格还应该询问所有服务的价格。除此之外,最好确保每个唯一的服务组组合只能有一个 Price 实例。
【问题讨论】:
-
不同的价格是否总是可以作为公式推导出来的?例如如果是第 1 组,*5。价格,如果是第 2 组,*2 价格?
-
@gregory 我明白你的意思,如果它背后有一个固定的公式,你可以将价格存储在 Service 模型中,并将一个因素存储在 Group 模型中,从而使问题变得微不足道。但是让我们说不,价格可以是完全任意的
-
好的,那么是的,你的 Price 类是相当明智的。
标签: python django database model