2016-12-08 1 views
0

정규화 된 DB에 9 밀리 이상의 레코드가있는 레거시 DB이므로 여러 테이블이 있습니다.매우 큰 데이터베이스의 Django Admin

매우 큰 테이블에 ForeignKeys가있는 테이블을로드 할 때 새로 설치된 (기존 DB 적응) Django 관리자는 느리게 사용할 수 없으므로 느립니다.

이유는 간단합니다. 관리 페이지를로드하려고 할 때 ForeignKey 테이블이로드되어 관리 화면의 메뉴로 이동합니다. 이 SQL은 충분히 빨리로드되지 않습니다. 로드가 완료 되더라도 항목 메뉴는 크고 사용자에게 적합한 위젯이 아닙니다.

그래서 ... 다른 사람이이 문제에 직면하여 해결했습니다. 아마도 필터링 된 조회로 메뉴를 대체 할 수있는 방법이 있을까요? 이 다른 영리한 해결책? 어쩌면 전체 프로젝트가 Django와 Admin에게 큰 데이타베이스로 바쳐 질 수 있습니다.

+0

Django 관리자를 사용하여 FK를 정말로 수정해야합니까? 그렇지 않다면 모델에서'editable = False'를 지정하여 해당 필드를 숨길 수 있습니다. – Selcuk

+0

좋은 지적. 지금 그렇게 할 수 있습니다. 그러나 많은 FK 테이블이 모두 서로 관련되어 있습니다. 그리고 나는 언젠가 누군가가 뭔가를 편집하고 싶어 할 것이라고 확신합니다. 따라서 팝업과 검색을위한 새로운 위젯을 갖는 것이 좋습니다. (나는 그러한 것들이 존재하는지, 아니면 더 나은 것이 있는지 주로 여기에서 묻고있다. 그렇지 않다면 나는 그것을 세울 것이다.) – campbell

+0

그것은 당신의 정확한 필요에 달려있다. 우선, [formfield_for_foreignkey] (https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_for_foreignkey)를 살펴보십시오. – Selcuk

답변

1

raw_id_fields을 사용해 볼 수 있습니다.

+0

역 효과가 없습니까? – shlomoa

+0

@shlomoa 일부 사용자는 "raw_id"표준 위젯을 선호합니다. 나는 다른 부정적인 부작용을 모른다. – mox