【发布时间】:2020-03-29 01:17:48
【问题描述】:
我有许多与某些房地产相关的“功能”。例如,单户住宅可以有 4 间卧室、2 间浴室、1 个游泳池。公寓单元将配备空调和洗衣房等。我不确定如何将这些功能与 Django 模型中的每个属性相关联。我的第一次尝试是让每个属性都用一个唯一的 ID 表示,并创建一个列出所有功能的表?例如
propertyID | A/C | Bedrooms | Bathrooms | Electric Stoves | Pool | Balcony | Gas Stoves
123 | T | 4 | 2 | F | T | T | T
124 | F | 1 | 2 | T | F | F | F
...
如您所见,如果我正在处理一个天气寒冷的区域,Pool 很可能是所有F,我选择表示特征的方式可能是很多重复值。我不确定另一种方法来建模我的数据。随着我添加越来越多的功能,例如 wifi、壁炉,该模型将水平增长。它还可能有很多 F 值,用于一些非常不常见的东西(直升机停机坪)
Django 中的示例模型
class Features(model.Models):
air_conditioning = models.BooleanField()
electric_stove = models.BooleanField()
pool = models.BooleanField()
bathrooms = models.PositiveIntegerField()
...
...
...
【问题讨论】:
-
我真的没有看到这样做的问题。您能想到的可能的事情...如果空调仅出现在一处房产的某些卧室中怎么办?也许这是不需要的信息,但这在您的设计中是不可能的。在这种情况下,您必须拆分模型,并拥有一个单独的模型“房间”,其中包含“A/C”“类型”等列。此外,一个“房间”有一个外键指向它所属的“属性”。所以一个属性就变成了一个“房间”的容器。
-
如果它随时间动态增长,我建议您使用 NoSQL DB 之类的 MongoDB,它使您能够克服模型迁移和动态列创建
标签: python django database django-models django-rest-framework