Модель Django со значением в виде специального кода символов HTML

Я запутался в том, как реализовать модель Django, в которой значением является специальный код html-символа для создания шахматной доски. В качестве образца я рассматриваю модель доски судоку:

class Board(models.Model):
    name = models.CharField(max_length=4, primary_key=True)
    value = models.SmallIntegerField()

Значение для судоку легко, поскольку таблица будет заполнена только числами. Для справки вот фрагмент из словаря sudoku page_data в файле views.py, дающий каждой ячейке таблицы соответствующее значение:

{"r1c1": 6, "r1c2": 7, "r1c3": 0, ...}

Я не знаю, что поставить в качестве переменной значения моей модели:

class Board(models.Model):
    name = models.CharField(max_length=2, primary_key=True)
    value = 

Вот фрагмент, где я назначаю пары имя/значение в моем views.py со специальными кодами символов шахматных фигур HTML в моем собственном словаре page_data:

{"a8": html.unescape('♖'), "b8": html.unescape('♘'), "c8": html.unescape('♗'), ...}

Любая помощь будет принята с благодарностью.

Итак, вы ищете способ хранить ваши json-данные в поле модели django.

Одним из вариантов может быть преобразование данных json в строку и хранение ее в Charfield.

class Board(models.Model):
    name = models.CharField(max_length=4, primary_key=True)
    value = models.CharField(blank=True, null=True)

Затем преобразуйте ваши данные json в строку с помощью следующего кода:

import json

data = {"r1c1": 6, "r1c2": 7, "r1c3": 0}
Board.objects.create(name="bo", value=json.dumps(data))

Вы можете использовать данные json в шаблоне с помощью тега safe:

from django.utils.safestring import SafeString

def view(request):
    return render(request, 'template.html', {'board': SafeString(my_board.value)})

Если вы не хотите преобразовывать json в строку, вы можете посмотреть на JSONField.

Вернуться на верх