【发布时间】:2021-06-25 03:34:03
【问题描述】:
我正在做一个提供服务的网站
我应该为不同类型的可用服务创建不同的模型吗?
类服务: 姓名: 说明:
一流的酒店服务: 服务=外国(服务) 报到 结帐
类送货服务: 地点 来自:
像这样???
【问题讨论】:
标签: django django-models orm
我正在做一个提供服务的网站
我应该为不同类型的可用服务创建不同的模型吗?
类服务: 姓名: 说明:
一流的酒店服务: 服务=外国(服务) 报到 结帐
类送货服务: 地点 来自:
像这样???
【问题讨论】:
标签: django django-models orm
在这种情况下,每当您需要新服务时,您都必须在项目中创建新模型,这可不好!
相反,您可以制作两个模型Service 和Attribute。
class Service(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
class Attribute(models.Model):
service = models.ForeignKey(Service, on_delete=models.CASCADE)
name = models.CharField(max_length=200)
value = models.TextField()
value_type = models.CharField(max_length=100, choices=[]) # choices will be like string, boolean, date etc.
所以当你需要一个新服务时,创建一个服务模型对象,如hotel service,然后为该服务创建相关属性,如check_in、check_out 等。你需要根据值强制转换属性值输入。
在这种方法中,您不再需要更改代码库来创建新服务。
您还可以将attribute.name 设为AttributeName 模型的外键,以切断名称冗余。
【讨论】: