IT

더 나은 Django 관리자 ManyToMany 필드 위젯

lottoking 2020. 8. 30. 09:05
반응형

더 나은 Django 관리자 ManyToMany 필드 위젯


Django Admin의 기본 models.ManyToManyField위젯이 사용하기 번거 롭다는 것을 알았습니다 . 그것은의 HTML 선택을 요소는 "다른"모델의 객체의 많은 경우 그것은 실제로 "다른 하나는"당신이 "이"개체와 연결할 개체 찾기 위해 매우 비현실적 이다 . 그리고 "기타"의 개체가 모델 많은 경우 관리 페이지의 렌더링 속도를 늦추는을 구석으로 같습니다.

의 user-지정 나만 관리 위젯을 빌드하고 ManyToManyFields적절하다고 판단 되는대로 적용 할 수 있다는 것을 알고 있지만 대신 사용할 수있는 미리 빌드 된 위젯 이 있습니까? 꿈에서 나는 자동 완성 텍스트 입력 HTML 위젯을 상상합니다. Django 관리 프레임 워크에서 이것이 실용적 / 가능합니까?

감사합니다.


filter_horizontal클래스 관리자 속성을 사용해보십시오 . 예를 들면 다음과 같습니다.

class SomeModelAdmin(admin.ModelAdmin):
    filter_horizontal = ('users',)

문서 에서 언급했듯이 "이 목록에 ManyToManyField를 추가하면 옵션 내에서 검색 할 수있는 멋지고 눈에 잘 어울리는 JavaScript"필터 "인터페이스가 사용됩니다". 약간 다른 레이아웃으로 동일한 작업을 수행합니다.filter_vertical


그들은 원시 ID를 볼 수 관리자 있습니다. 및 django 문서 : http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields

자동 완성 기능으로 계획을 소유 한 관리자 시작점으로 보는 것이 좋습니다 http://code.djangoproject.com/wiki/AutoCompleteSolutions

마지막으로 매우 단순한 인라인 예제 :

models.py

class SomeModel(models.Model):
    users = models.ManyToMany(User)

admin.py :

class SomeModelAdmin(admin.ModelAdmin):
    raw_id_fields = ("users",)

나는 그것을 그것을 가지고 놀지 어디에 다른 곳에서 참조하는 이 유망한 라이브러리를 발견 했습니다 .

내가 원하는 것을 정확히하는 것입니다. 관련 개체의 전체 목록을로드하고 (수에 관계없이!) 일부를 선택할 대신 수있는 선택기를 filter_horizontal제공하는 검색 / 필터 상자를 제공하고 자동 완성 / 자동 완성 호출을 사용하여 결과를 검색합니다. 동적으로. 이는 5000 명의 사용자가 사용하는 5k <option>요소가 다운로드 및 될 때까지 기다리지 않고 선택하려는 경우에 유용 합니다.


이 상황은 Django 인라인 관리자가 정확히 무엇을위한 것입니다. 특히 선택 항목이 너무 많은 다 대다 관계에 대해 원시 ID 필드와 함께 TabularInlines를 사용합니다.

https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#django.contrib.admin.TabularInline

참고 URL : https://stackoverflow.com/questions/5385933/a-better-django-admin-manytomany-field-widget

반응형