Модель 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.