什么是正确的方法来保持一个数据?

2024-06-09 17:13:28 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: django代码模型文本模板信息数据库编辑
1条回答
网友
1楼 · 发布于 2024-06-09 17:13:28

在数据库中有一个只有一行的表本身并没有错。在设计系统时,数据块通常不会经常更改,但可以更改。在将安装在多个站点的系统中,这可能是诸如启用/禁用功能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),需要不同的表。长配置还需要多次读取以获取可能相关的多个数据段

对于给定的项目,最合适的方法取决于诸如数据量、数据类型以及对数据的处理等因素。它通常是多种方法的结合

相关问题 更多 >