Django Check constrain предотвращает сохранение строки в json fileld

Как предотвратить сохранение строкового литерала в поле JSON?

class MyModel(models.Model):
   settings = JSONField("Additional settings", default=dict, blank=True)

Теперь я могу сделать это

inst = MyModel.objects.get()
inst.settings = 'some string'
inst.save()

но некоторые логины ожидают dict.

теперь мне нужно проверить dict в коде.

Я добавляю простое ограничение

    class Meta:
        ordering = ['-updated_at']
        constraints = [
            CheckConstraint(
                check=~(Q(settings='') | Q(settings='{}')),
                name='reduce_sats_process_check_settings_must_be_json_object'
            )

        ]

но это не предотвращает сохранение всех вариантов строк.

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