保持一次性数据的正确方法是什么?

时间:2018-01-23 00:26:15

标签: python django

我在Django有网上商店,我想保留一些信息,比如经理的地址或手机,但这些信息应由网站管理员简单编辑。所以,我不能把它作为模板中的文本或代码中的变量,因为现在我需要创建一些表格来编辑这些信息。
我不知道该怎么做:在我的数据库中创建模型信息,包含我想要保留的所有字段,或者为每个字段创建几个模型。或者可能有更好的解决方案?

1 个答案:

答案 0 :(得分:1)

在数据库中只有一行的表没有任何内在错误。在设计系统时,通常会有一些数据不经常更改,但可以更改。在将安装在多个站点的系统中,这可能是配置设置,如启用/禁用功能A或功能B,或用于特定计算的三种不同方法中的哪一种。在只有一个安装的系统中,可能是本地销售税率,或者如果需要可以联系谁以及如何联系。不应对此信息进行硬编码,以便只有程序员才能对其进行更改,而应将其置于数据存储中,以便用户/高级用户/管理员对其进行编辑和更新。它可以位于系统的主数据存储区,文本配置文件或Windows注册表中。

Windows注册表不适合基于服务器的python / django应用程序。 Python有一个内置的configparser模块,它可以很好地将这种类型的信息保存在文本文件中,与程序一起使用。我相信其他语言也有类似的功能。 Django内置了一个关系数据库的ORM。大多数(所有?)django应用程序将使用ORM / RDBMS功能。我无法看到将另一个模块(configparser)添加到已经能够方便可靠地存储/检索此信息的应用程序的原因。这只会增加系统的复杂性。

留下存储在主数据存储区/ RDBMS中。这在Django中非常方便,因为管理界面的可用性允许编辑。将这些数据存储在数据库中有两种主要方法。我会称之为宽,长。宽配置存储由一行数据组成,每行数据都有一个指定的列。

 Name     |    Phone    | tax rate |  ftr A | ftr B | …     
Joe Smith | 1234567890  |7.6       | Y      | N     | …

长配置存储键值对 - 类似于python dict

 Key                  |    value     
 Name                 | Joe Smith   
 Phone                | 1234567890   
 Feature A            | Y    
 …                    | …

广泛的配置有一个缺点,即添加另一条信息需要修改数据存储模型(数据字典,文件布局......)。宽配置仅在一次读取中检索所有数据。这可能意味着检索不需要的数据。

长配置允许通过向表中添加另一行来添加另一条信息。但是,需要不同类型的数据(string,int,float)使用不同的表。长配置还需要多次读取才能获得可能相关的多个数据。

给定项目最合适的方法取决于数据量,数据类型以及数据处理方式等因素。它通常是方法的组合。