상속을 사용하여 모델을 구현하고 싶습니다.이 패키지는 django-polymorphic
입니다. 하지만 장고 모델에서 상속에 대해 읽고 있었고 거의 모든 페이지에서 부모 모델에 abstract = True
을 사용하는 것이 좋습니다. 서브 클래스의 필드를 복제하여 쿼리를 더 빠르게 만듭니다.Django Polymoprhic
나는 몇 가지 테스트를 수행하고이 라이브러리는 추상적 인 가변적이고을 사용하여 사용하지 않는 것을 발견했습니다
이class Parent(PolymorphicModel):
parent_field = models.TextField()
class Child(Parent):
child_field = models.TextField()
This results in:
부모 테이블 :
| app_parent| CREATE TABLE `app_parent` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_field` longtext NOT NULL,
`polymorphic_ctype_id` int(11),
PRIMARY KEY (`id`),
KEY `app_polymorphic_ctype_id_a7b8d4c7_fk_django_content_type_id` (`polymorphic_ctype_id`),
CONSTRAINT `app_polymorphic_ctype_id_a7b8d4c7_fk_django_content_type_id` FOREIGN KEY (`polymorphic_ctype_id`) REFERENCES `django_content_type` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
Child table:
| app_child | CREATE TABLE `app_child` (
`parent_ptr_id` int(11) NOT NULL,
`child_field` varchar(20) NOT NULL,
PRIMARY KEY (`parent_ptr_id`),
CONSTRAINT `no_parent_ptr_id_079ccc0e_fk_app_parent_id` FOREIGN KEY (`parent_ptr_id`) REFERENCES `app_arent` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
내가 내 자신의 클래스를 사용해야 어떤 추상적 인 사용 필드 또는이 막대기해야합니까?
왜 장고 - 다형성을 사용하고 싶습니까? 너의 이유는 무엇인가? 나는이 도서관을 좋아한다. 왜냐하면 그것은 나를 위해 뭔가를 풀어주기 때문이다. 그것은 당신을 위해 무엇을 해결해야합니까? – guettli
나는 상속을 사용하고자하는 비슷한 테이블이 많이있다. 내 코드를 단순하게하고 싶습니다. 나는 똑같은 5 개의 테이블과 변경 필드를 통과하기를 원하지 않습니다. 그러나 나는 정말 느린 SQL 쿼리를 원하지 않지만,이 패키지가 추상적 인 필드를 사용하지 않는다는 것을 알면 내 성능에 어떤 영향을 미치는지 알 수 없다. –