【问题标题】:Best way to store a list in Django (Not Postgres)在 Django 中存储列表的最佳方式(不是 Postgres)
【发布时间】:2020-05-27 09:18:03
【问题描述】:

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

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

forms.py

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

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

models.py

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

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

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

谢谢。

【问题讨论】:

    标签: mysql django django-models django-forms


    【解决方案1】:

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

    在models.py中

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

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

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

    【讨论】:

    • 非常感谢。明天我会试一试,让你知道我是怎么走的。我真的很感激
    【解决方案2】:

    让 Django 像这样存储它,您可以稍后操作列表将其转换为列表列表,如:

    >>>lst = ['COM', 'CRI', 'CUL', 'FOO']
    >>>[[i] for i in lst]
    [['COM'], ['CRI'], ['CUL'], ['FOO']]
    

    【讨论】:

    • 非常感谢。明天我会给sheep64的答案一试,如果它不起作用我就这样做:)
    猜你喜欢
    • 1970-01-01
    • 2014-07-08
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2011-04-17
    • 1970-01-01
    相关资源
    最近更新 更多