首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django在模型中放置数据表

django在模型中放置数据表
EN

Stack Overflow用户
提问于 2017-05-16 12:53:06
回答 2查看 563关注 0票数 0

(这里是Django菜鸟)

对于“项目”模型,我想存储一些数据。这些数据是关于房产的。例如,居住空间的数量,这些空间在哪层,以及这些空间有多大。

  • 居住-空间1-地下-50平方米
  • 居住-空间2-一楼-82平方米
  • 等。

因为并不是每个项目对象都有一定数量的生存空间,而有些项目对象也有一个类似于商店空间或餐厅空间的行,所以我想知道一种存储这些数据的好方法。B,因此我想在模型中存储一个动态大小的表。下面是一个很好的例子:

  • 餐厅-底层-147平方米
  • 居住空间1-一楼-55平方米
  • 居住空间2-一楼-110平方米
  • 居住空间3-二楼-55平方米
  • 居住空间4-二楼-110平方米
  • 居住空间5-3楼-147平方米

现在,一些项目将只有2个,3个居住空间,没有餐厅等,其他项目将可能有多达10个居住空间。我在考虑创建10行字段。所以我可以输入逗号分隔的值(或者JSONfield)。类似于:

代码语言:javascript
复制
row_01 = models.CharField(max_length=100)
row_02 = models.CharField(max_length=100)
row_03 = models.CharField(max_length=100)
row_etc = models.CharField(max_length=100)

"Livingspace 1","First floor","55"
"Livingspace 2","Second floor","100"
etc
  1. 这是否是将此表放入数据库的正确方法?JSONfield怎么样?
  2. 此外,在我的模型中,我有一个字段,其中的住房空间数量必须由用户输入。因此,我在想,是否可以根据模型中的其他字段动态创建行?因此,如果用户在Django管理中,并输入4表示房屋数量,而用户在Django管理中只看到4行。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-16 14:40:47

不,这不是很好的做法。

据我所知,可以使用两个表来包含这些数据。在django中,每个模型对应一个表,字段作为列。所以你只需要做一个房子模型和另一个模型房间与外键关系的房子模型。

一个简单的例子:

代码语言:javascript
复制
class House(models.Model):
    name = models.CharField()

class Room(models.Model):
    house = models.ForeignKey(House)
    room_type = models.CharField()
    area = models.CharField()
    floor_no = models.IntegerField()

由此,每个house模型实例表示一个房子。每个Room实例表示您前面说过的行。通过这样的模型设计,可以使过滤、查询​变得非常容易。

房间实例通过外键关系链接到House模型,该关系允许根据所需的规范创建任意数量的行。

要获得更多参考,请尝试使用文档

票数 0
EN

Stack Overflow用户

发布于 2017-05-16 13:18:54

数据库模式的类型取决于您将如何使用该数据。要聚合(和、计数等)的字段(主键除外)、基于它们的查询将直接放置为列,而依赖(动态)于其他列的字段可以进入JSON字段。

考虑到您的用例,JSON可能是一个很好的方法,因为您可能不希望基于每个数据进行查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44002047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档