django admin 동적 다 중 선택 상자 폼 의 예제 코드 구현

배경

django-admin 을 통 해 CRUD 인터페이스 를 빠르게 얻 을 수 있 지만,다 중 탭 필드 를 만 들 려 면 폼 을 조정 해 야 합 니 다.
예시
model.py
  • 하나의 tag(라벨 류),하나의 book(책 류)
  • 북 은 tag 를 가지 고 있 습 니 다.여 기 는 성능 문제 가 있 는 외부 키
  • 를 빌 리 지 않 습 니 다.
    
    class tag(models.Model):
        name = models.CharField(max_length=20, verbose_name='  ')
     
     
    class book(models.Model):
        name = models.CharField(max_length=50, verbose_name='  ')
        tags = models.TextField(null=True, verbose_name='  ')
     admin.py
    대응 하 는 model 을 admin 에 등록 해 야 django-admin 에 의 해 발견 되 고 사용 할 수 있 기 때문에 주요 절 차 는 다음 과 같 습 니 다.
  • values_list 반환:
  • 최신 탭 목록 확보:폼 초기 화 에서 탭 조 회 를 한 번 만 수행 합 니 다
  • 폼 수정 표시 탭:폼 에서 할당 목록 대상 초기 화
  • 
    #     
    def get_tag_list():
        return tag.objects.values_list("name", "name")
     
    #      
    class bookForm(forms.ModelForm):
        tags = forms.MultipleChoiceField(label='  ', widget=widgets.CheckboxSelectMultiple)
     
        def __init__(self, *args, **kwargs):
            super(cameraForm, self).__init__(*args, **kwargs)
            
            #                
            self.fields['tags'].choices = get_tag_list()
            
            #                 ,           ,            
            self.initial['tags'] = eval(self.initial['tags'])    
     
        class Meta:
            model = book
            exclude = []
     
    # book  
    class bookAdmin(admin.ModelAdmin):
        search_fields = 'name', 'tags')
        list_display = ( 'name', 'tags')
        form = bookForm
     
    #    admin 
    admin.site.register(book, bookAdmin)
    처리 결과
    데이터베이스 형식 에 쓰기
    데이터베이스 에 문자열 을 목록 으로 저장 합 니 다.

    django 폼 스타일

    이상 은 django admin 이 동적 다 중 선택 상자 폼 을 실현 하 는 예제 코드 에 대한 상세 한 내용 입 니 다.django admin 다 중 선택 상자 폼 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

    좋은 웹페이지 즐겨찾기