Использование поля Django Json для уменьшения проблем с миграциями

Я новичок в Django Json Field. До сих пор я создавал модели и переносил их. Теперь я познакомился с Jsonfield. То, что я слышал, это лучший способ смягчить проблему миграции из-за jsonfield. Это потому что, если нам придется добавлять поля или удалять поля из модели после заполнения полей (если мы использовали другие обычные поля, такие как chafield и emailfield) в производстве, может возникнуть проблема миграции, которую мы можем избежать, если мы используем jsonfield, потому что мы можем просто передать любые данные json с любым количеством полей в jsonfield. Итак, является ли это лучшим способом избежать проблемы миграции? Я ищу совета экспертов здесь, потому что нет никого, кого я мог бы спросить, и это то, что я слышал.

Похоже на это.

class Example(models.Model): 
    
    data = models.JSONField(null=False, default=dict)

Итак, вместо того, чтобы создавать две модели с именами Contacts и Feedback для сохранения данных контактной формы и формы обратной связи, я могу просто использовать этот же пример модели и валидировать для принятия любых данных из множества подобных форм, существующих во фронтенде.

Если вы хотите использовать JSON только для того, чтобы избежать миграций, то это не самая лучшая идея.

В основном, существуют два правила использования JSON:

  • Если данные не имеют строгой структуры.
  • Если вам не нужно запрашивать (фильтровать, искать, упорядочивать и т.д.) базу данных, используя данные.

Рассмотрим следующий пример:

class User:
    email = EmailField()
    address = JSONField()

email находится в отдельном поле, потому что мы хотим легко запросить базу данных для проверки дубликатов регистраций.

Поле address находится в поле JSONField, потому что нам не нужно будет запрашивать базу данных, используя адресные данные.

Однако в некоторых приложениях может потребоваться запрос с использованием адреса, например, чтобы перечислить всех пользователей из определенного города. В этом случае использование JSON будет плохим выбором.

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