Лучший способ сохранить список в Django (не Postgres) - PullRequest
0 голосов
/ 27 мая 2020

У меня есть база данных mysql, и я храню список. В настоящее время я храню его как CharField, но не знаю, лучший ли это способ сделать это. Я знаю, что я должен использовать ArrayFeild, если мой db был postgres, но его MYSQL.

Я был доволен этим решением, пока не понял, что данные хранятся следующим образом: ['COM', 'CRI', 'CUL', 'FOO'] тогда как id ожидает, что он будет храниться следующим образом: [['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='')

Как данные хранятся в my db:

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Не-а, это немного сложно. Я была такая же проблема. Я пытался сделать это с помощью таких вещей, как toString et c. В итоге я использовал JSONField. Таким образом, вы можете бросить все в var, и когда вы сохраните это Django, преобразует это в JSONField в БД. Если вы загрузите его из базы данных ur, вы сможете получить доступ к значениям, как всегда. Вы можете l oop это или все, что вы хотите с ним сделать

In models.py

import jsonfield

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

Так что это отлично работает для меня, если вам нужно что-то еще, дайте мне знать. pip install django -jsonfield Команда pip.

Если вам нужны еще примеры или пример кода, дайте мне знать.

0 голосов
/ 27 мая 2020

Пусть Django хранит его вот так, позже вы можете манипулировать списком, чтобы преобразовать его в список списков, например:

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