【问题标题】:Database mutable field数据库可变字段
【发布时间】:2017-06-18 01:33:27
【问题描述】:

我必须存储数据,其中一部分是预定义的,但用户可以选择自定义它。 将这些数据存储在数据库中的最佳方式是什么?

  1. 2 个字段,1 个是预定义选项的整数字段,第二个是自定义用户输入的字符串
  2. 1 个字符串字段,其中将包含类似 {predefined: 2, custom: ''} 的 json 格式
  3. 1 个字符串字段,将包含自定义字符串或预定义选项 ID(在请求过程中转换)
  4. 1 个字符串字段将包含全文选项,即使它是预定义的(其中一些预定义选项可以是长文本)

我尝试了 1),但每个“自定义就绪”数据的字段数加倍似乎并不完美......

有什么想法吗?

【问题讨论】:

  • 举个例子就好了。您使用的是哪个 Django 版本和哪个 RDBMS?

标签: django database model


【解决方案1】:

考虑到您可能需要以下内容(您的问题不是很清楚):

  1. 一个表单,其中有一个用于字符串的可自定义部分的输入字段
  2. 引用完整字符串的简单方法
  3. 一种管理/管理/验证不可自定义字符串的方法

=> 使用两个字段:

class TheModel(Model):
    # if you have a certain constant number of choices, use ChoiceField
    # otherwise use a ForeingKey and create a different model for those
    non_customizable_prefix = ChoiceField(null=False, blank=False, ...)
    # unique? validators? max/min length? null/blank?
    customizable_part = CharField(...)

    @property
    def complete_string(self):
        return '{}{}'.format(self. non_customizable_prefix, self. customizable_part)

此模型将在 Django 表单或 Django 管理员中为您提供两个单独的输入字段,提供简单的方法来使 non_customizable_prefix 只读或仅可通过某些权限修改。

【讨论】:

    猜你喜欢
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 2014-05-31
    • 1970-01-01
    • 2012-07-18
    • 2011-07-23
    • 2014-07-11
    相关资源
    最近更新 更多