Django 프로젝트는 JSON 필드를 지원하는 postgresql 9.4를 사용합니다. 이 필드를 사용하여 관계형 스키마에서 부분적으로 비 관계형 스키마로 전환하고 싶습니다.Postgres와 Django의 비 관계형 데이터베이스 스키마
모델 Foo
및 Bar
이 있고 각 개체 Bar
은 정확히 하나의 Foo
에 속한다고 가정 해 봅시다. 현재, 나는 Bar
에서 Foo
까지의 ForeignKey를 모델로 사용하고 있지만 Foo
모델 인스턴스의 목록으로 직접 Bar
개체를 저장하는 것으로 전환하고 싶습니다. postgresql에서는 Foo
에 JSONField
을 사용하여 Bar
개체의 JSON 표현 목록을 저장할 수 있지만 JSON에 대한 직렬화를 수동으로 처리해야합니다.
장고의 MongoDB를 ORM 깨끗한 방법으로 그렇게 장고 필드를 제공합니다 포스트그레스 백엔드와 유사한 기능을 할 수있는 방법이
class Foo(models.Model):
bar_list = ListField(EmbeddedModelField('Bar'))
있습니까?
감사합니다.하지만 몇 년 동안 데이터를 가지고 놀았습니다. 내가 실행 한 쿼리를 알고 있으며,이 리팩터링을 통해 작업 속도를 향상시킬 필요가 있다고 확신합니다 (1. 중첩 된 객체 2.이 객체는 필요하지 않습니다 3. 이것은 ORM에 의해 처리되어야합니다 4.이 모델의 변경은 이미 파이썬 무겁습니다 5. 중첩 객체는 거의 없으며 Foo의 Bar 객체의 평균 개수는 닫습니다 하나에). – pintoch
나는 그것이 잘못된 길을 택한 것을 본다. 데이터에 대한 지식에 의문을 제기하는 것이 아닙니다. 이전에 제가 경험 한 것과이 접근법의 단점을 여러분 께드립니다. 절대적으로 필요하기 때문에 Django 1.9부터 JSONField를 사용할 수 있습니다. 그것은 파이썬 객체를 받아 JSON으로 저장합니다. get 객체가 다시 파이썬으로 파싱 될 때 JSON으로 저장됩니다. –
그래, 그게 내가 내 질문에 언급했던거야, 난 그냥 거기에 더 높은 수준의 버전이 있는지 궁금해. 분명히 거기에 없다, 그래서 대답은 질문. :-) – pintoch