如何确定Django模型的正确布局?

时间:2019-04-25 10:31:22

标签: django postgresql django-models

是的,所以我一直在进行django项目,在这里我可以扩展模型类或使用相同的模型将未使用的字段设置为空。我不确定哪种方法更好?我正在使用Postgres作为数据库。

因此,有两种情况:

案例1:

class Model1(models.Model):
    field1 = models.CharField(max_length=255,null=True)
    field2 = models.CharField(max_length=255)
    ...
    field7 = models.CharField(max_length=255)
    field8 = models.CharField(max_length=255,null=True)
    field9 = models.CharField(max_length=255,null=True)
    field10 = models.DecimalField(max_digits=6, decimal_places=3, default=0)

问题是我必须以两种形式存储数据。在一种情况下,字段1,字段8,字段9将始终为空,而字段10将始终为0。 在第2种情况下,我可以通过两种方式拆分此模型,如下所示:

class Model1(models.Model):
    field2 = models.CharField(max_length=255)
    ...
    field7 = models.CharField(max_length=255)

class Model2(Model1):
    field1 = models.CharField(max_length=255)
    field8 = models.CharField(max_length=255)
    field9 = models.CharField(max_length=255)
    field10 = models.DecimalField(max_digits=6, decimal_places=3)

我很好奇,使用第二种模型创建案例我们能够节省多少内存。还是使用第二种方法比第一种方法有什么优势? 据我研究,postgres用空位图保存空值,空位图占用1个字节(最多8个字段),占用2个字节(9-16个字段)。因此,从理论上讲,在CharField情况下具有空字段的情况下,应每个添加1位。 另一方面,十进制字段的默认值为0,可能会占用更多空间。 太好了,如果有人可以提供有关存储和查询的更多信息。

0 个答案:

没有答案