2013-02-04 5 views
3

저는 AdminForm에서 filter_horizontal 옵션 대신 raw_id_fields를 사용할 m2m 관계가 있습니다. 설명을 위해 나는 레코드가 이미 분류되어 있기 때문에 filter_horizontal 옵션 대신 raw_id_fields를 선호합니다. 따라서 팝업 창에서 사용자는 카테고리를 통해 검색하고 필터링 할 수 있습니다. 그러나이 개 지점이 나는 알아낼 수 :raw_id_fields에서 한 번에 더 많은 레코드를 삽입하십시오.

  • 가능성을 INPUT_FIELD의 PK 대신 실제 이름을 나타내는 팝업 창
  • 더 이상의 레코드를 선택하는

답변

0

마지막으로 수정 된 https://django-salmonella.readthedocs.org/en/latest/을 사용하고 있습니다. 필자는 입력 필드를 표시하지 않고 선택된 레코드를 테이블에 표시합니다.

+0

django-salmonella를 사용하여 '변경시 개체의 문자열 값 표시'방법을 사용하여 여러 레코드를 한꺼번에 선택하는 방법은 무엇입니까? –

0
  1. 가능합니다. 하나 개 이상의 레코드를 선택하기 위해, 당신은 당신의 ModelAdmin 또는 위젯의 Media 클래스에 스크립트를 포함하여 django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js 기본적 dismissRelatedLookupPopup()를 재정의해야합니다

    var dismissRelatedLookupPopup = (function(prev, $) { 
        return function(win, chosenId) { 
         var name = windowname_to_id(win.name); 
         var elem = document.getElementById(name); 
    
         // 1. you could add extra condition checking here, for example 
         if ($(elem).hasClass('my_raw_id_ext_cls')) { // add this class to the field 
         //  ...logic of inserting picked items from the popup page 
         } 
         else { // default logic 
          prev(win, chosenId); 
         } 
    
         // 2. or you could copy the following part from RelatedObjectLookups.js ... 
         if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) {  
          elem.value += ',' + chosenId; 
          // 2. and add a return. Remember this acts globally. 
          return; 
         } else { 
          document.getElementById(name).value = chosenId; 
         } 
    
         // 3. the following line cause the popup to be closed while one item is picked. 
         // You could comment it out, but this would also affect the behavior of picking FK items. 
         win.close(); 
    
        } 
    })(dismissRelatedLookupPopup, django.jQuery); 
    
  2. 장고는 기본적으로이 기능을 지원하지 않습니다. djangosnippets.org에 일부 스 니펫이 있습니다.이 스 니펫을 살펴 보시기 바랍니다.

+0

답장을 보내 주셔서 감사합니다. 요즘 나는 너의 힌트를 시험 할 것이다. –

+0

이제 입력 내용을 구현하기 시작했습니다. 지금은 filter_horizontal 위젯에 표준 팝업 창 (하나의 recod 만 선택할 수있는 가능성)을 추가하려고합니다. 따라서 실제로는 RelatedObjectLookups.js는 변경되지 않았습니다. 팝업 창이 제대로 열리지 만 레코드를 선택하면 창이 닫히지 않고 선택한 레코드의 change_form으로 전환됩니다. 이 팝업 창의 소스 코드를 raw_id_fields 위젯에 의해 생성 된 소스 코드와 비교해도 동일합니다. @okm 내가 뭘 잘못하고 있는지 알 수 없다. –

관련 문제