Как представить 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)
При такой настройке получается результат, как показано ниже,
Как я могу сказать 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'