Как изменить value поля в форме?

Здравствуйте!

Использую JSONField, в нем хранятся данные в виде списка ["123", "345", "test"], поле oem_list.

При редактировании в поле данные в json ["123", "345", "test"], а нужно чтобы были просто через запятую 123, 345, test!

Как изменить данные в нужны формат, пробую self.fields['oem_list'].initial, не работает?!

class QueryForm(forms.ModelForm):
    oem_list = forms.CharField(label=u'OEM номера', required=False)

    def __init__(self, user, *args, **kwargs):
        super(QueryForm, self).__init__(*args, **kwargs)
        self.fields['oem_list'].initial = u"Значение поля заменено" # не работает

    class Meta:
        model = Query

    def clean_oem_list(self):
        data = self.cleaned_data['oem_list'].upper()

        if data and ',' in data:
            data = list(set(x for x in data.split(',') if x))
        elif data:
            data = [data]

        return data
  • Вопрос задан
  • 222 просмотра
Пригласить эксперта
Ответы на вопрос 3
fox_12
@fox_12 Куратор тега Django
Расставляю биты, управляю заряженными частицами
Как-то странно вы json грузите. Для начала попробуйте сделать это правильно:
import json
.....
self.fields['oem_list'].initial = json.dumps(ваше поле с json).replace('"','')[1:-1]
.....
data = json.loads(self.cleaned_data['oem_list'])
Ответ написан
Комментировать
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Можно написать свой widget, переопределить в нём методы render и value_from_datadict и явно прописать для поля oem_list.
Ответ написан
Комментировать
Зачем использовать JSON-поле для хранения списка? Возьмите ArrayField из djorm_pgarray, если у вас PostgreSQL.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы