Как представить JSONField в виде строки с запятыми на странице списка Django Admin?

Считаем, что у меня есть модель Django с пользовательской JSONField, как показано ниже,

# models.py

class JSONCustomField(models.JSONField):
    ...


class JSONFieldModel(models.Model):
    json_field = JSONCustomField(default=list)

Эта модель подключена через Django Admin

# admin.py

@admin.register(JSONFieldModel)
class JSONFieldModelAdmin(admin.ModelAdmin):
    def expected_json(self: JSONFieldModel):
        return self.json_field

    list_display = ("id", "json_field", expected_json)

При такой настройке получается результат, как показано ниже,

Current Output

Как я могу сказать Django, чтобы он разобрал и отобразил мой "список строк" в "строки, разделенные запятыми"?

Примечания

  • Версия Django 3.2.X
  • Предположим, что json_field будет принимать только list входы (так же, как ArrayField)

В классе модели я сделал валидатор clean, который проверяет значение для списка. Если это список, то он будет преобразован с помощью join в строку. Я проверил на себе, если я добавляю список, то он превращается в строку, и если я открываю запись и сохраняю ее, то она также превращается в строку.

class FieldModels(models.Model):
    ID = models.IntegerField(db_column='ID', primary_key=True)
    customer_str = models.JSONField(max_length=100, blank=True, null=True)

    def clean(self):
        if type(self.customer_str) is list:
            self.customer_str = ",".join(self.customer_str)

    def __str__(self):
        return 'FieldModels'

enter image description here

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