首页 > 解决方案 > 在 Django 中存储列表的最佳方式(不是 Postgres)

问题描述

我有一个 mysql 数据库并且正在存储一个列表。我目前将它存储为 CharField 但不知道这是否是最好的方法。我知道如果我的数据库是 postgres,我应该使用 ArrayFeild,但它是 MYSQL。

我对这个解决方案很满意,直到我意识到数据是这样存储的:['COM', 'CRI', 'CUL', 'FOO']而我希望它是这样存储的:[['COM'], ['CRI'], ['CUL'], ['FOO']]

表格.py

TOPICS = (
        ('ANI', 'Animals'),
        ('ART', 'Art'),
        ('COM', 'Communication'),
    )

    topics = forms.MultipleChoiceField(choices=TOPICS, required=False, 
    widget=forms.CheckboxSelectMultiple())

模型.py

topics = models.CharField(max_length=200, default='')

数据如何存储在我的数据库中:

['COM', 'CRI', 'CUL', 'FOO']

谢谢你。

标签: mysqldjangodjango-modelsdjango-forms

解决方案


不,这有点棘手。我遇到过同样的问题。我试图用 toString 等东西来做这件事。我最终使用了 JSONField。因此,您可以将所有内容都放入一个 var 中,当您保存此 Django 时,会将其转换为 DB 中的 JSONField。如果你从你的数据库中加载它,你可以像往常一样访问这些值。你可以循环它或你想用它做什么

在模型.py

import jsonfield

class Example(models.Model):
   example = jsonfield.JSONField()

所以这对我来说很好,如果你需要其他任何东西,请告诉我。pip install django-jsonfield pip 命令。

如果您需要更多示例或代码示例,请告诉我。


推荐阅读