Использование поля 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 будет плохим выбором.