python - 使用 Django 存储数据库设置的最佳方式是什么?

标签 python django

我正在尝试使用 Django 编写浏览器游戏,但我对如何存储游戏设置有点困惑。例如,游戏是基于刻度的,我想存储当前的刻度。我决定每个数据库只需要一个游戏,以避免内置用户授权系统出现问题(例如,我不想说用户名 X 不可用,因为它已经在不同的游戏中使用)。据我所知,我仍然需要将此信息存储在数据库表中,但我不确定如何最好地做到这一点。我似乎有 2 个选择:

A) 将游戏作为其他表(例如我的用户配置文件)引用的正常模型,忽略可能存在不止一个游戏的可能性。这意味着在技术上有 2 个游戏行是可能的,但如果有的话很容易坏掉。

B) 我有一个模型,我总是假设它只有一行,用于存储游戏的所有配置数据。该模型仅包含静态方法,其他模型均未引用它。例如:

class Game(models.Model):
    current_slot = models.PositiveIntegerField(default=0)

    @staticmethod
    def slots_per_day(self):
        Genre.objects.get(id=1).current_slot

这些选项对我来说似乎都不“正确”,但谁能告诉我哪一个比另一个更好?或者是否还有其他我还没有看到的选项?

最佳答案

你可以更通用一点,只需要一个“设置”记录。这将使您能够无限扩展可以存储的设置数量。

class Setting(models.Model):
    name = models.CharField(max_length=50)
    value = models.TextField()

# ...

# Get the current slot setting
current_slot = Setting.objects.get(name='current_slot').value

# ...

# Or wrap it in a helper method
def get_setting(name, default_value):
    try:
        return Setting.objects.get(name=name).value
    except:
        return default_value

current_slot = get_setting('current_slot', 0)

关于python - 使用 Django 存储数据库设置的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1911652/

相关文章:

python - 为外部导入的表创建 django 模型

python - 创建相同模型的新字段时从现有字段复制值

Python 时区感知日期时间和 UTC 转换

python - 如何使用 pdfminer 作为库

python - 如果是 JPG 图像,QLabel() 将不会加载像素图

python - 在 docker 中将 redis 和 mongo 与 postgres 一起使用

Django:过滤带注释的日期时间?

python - 将输出值保存在 python 列中的 txt 文件中

python - 以随机顺序打印单词列表 - Python

python - 让 Django 将模型 id 包含在所有模型实例的字符串表示形式中以进行调试