2013-06-25 2 views
1

실제 정보에 '바로 가기'로 채울 수있는 텍스트 상자가 있도록 학술지를 나타내는 모델에 대해 장고 관리자 편집 페이지를 사용자 정의하려고합니다. 모델에서 (BibTeX 참고 문헌을 기반으로). 즉, "Publication"모델의 각 필드를 지루하게 작성하는 대신 사용자는 BibTeX 항목을 복사/붙여 넣기하고 버튼을 클릭하고 관련 필드를 자동으로 채울 수 있습니다.장고의 텍스트 필드에서 관리자 양식 채우기

템플릿을 편집하여 모델의 일부를 나타내지 않는 텍스트 상자와 버튼을 만들 수 있었지만 버튼을 페이지를 떠나지 않고 수행하는 방법을 알아낼 수는 없습니다. 보기를 무시할 수 없습니다. 폼의 필드를 채우지 만 동일한 페이지에 머물러 있기를 원하는 경우 사용자가 파싱 된 내용을 살펴보고 편집 할 수 있기를 원합니다.

Django 관리자의 양식을 동적으로 채우는 버튼을 만드는 방법은 무엇입니까?

죄송합니다. 내 팀과 나는 장고를 처음 사용합니다!

답변

1

페이지를 떠나지 않고 장고에서 직접 만들거나 적어도 제출 및 다시 표시 할 수는 없습니다. 양식을 제출하지 않으려는 경우 Javascript를 사용하여 텍스트 상자의 컨텍스트를 구문 분석하고이를 관리자 입력 필드에 지정할 수 있습니다.

그렇다면 내 관리 클래스에 대한 양식을 정의한 다음 save_model 메서드를 전문으로 지정하면됩니다. 이런 식으로 뭔가 : 분명히

class PublicationAdminForm(forms.ModelForm): 
    class Meta: 
     model = Publication 
    bibtex_entry = forms.CharField(widget=forms.Textarea) 

class PublicationAdmin(admin.ModelAdmin): 
    form = PublicationAdminForm 

    def save_model(self, request, obj, form, change): 
     bibtex = form.cleaned_data['bibtex_entry'] 
     values = parse_bibtex(bibtex) 
     obj.author = values['author'] 
     # etc etc, or whatever format you want to use to represent the values you're pulling from the BibTeX entry 
     super(PublicationAdmin, self).save_model(request, obj, form, change) 

save_model 안에 정확히 코드가 어떻게이하여 BibTex 항목에서 정보를 끌어 야에 따라 달라집니다 - 난을 저장하기 전에 양식의 내용을 기반으로 객체에 속성 값을 할당 증명하고 싶었다 .

BibTeX에서 파생 된 필드가 필요한 경우 조금 더 어려워집니다.메서드를 BibTeX에서 필요한 모든 값의 여부를 확인할 수있는 형식으로 지정해야합니다 제출 된 정보에서 파생 될 수 있습니다. 어쨌든 필드가 필요하지 않은 경우 구문 분석을 양식의 clean_bibtex 메서드로 제한하려고 할 수 있지만 어쨌든 좋은 아이디어입니다. 또는 BibTeX를 to_python 메서드로 사전과 같은 구문으로 구문 분석하는 방법을 알고있는 사용자 정의 필드 유형을 만들 수 있습니다.하지만 좀 더 고급입니다.

물론 다른 설정이 관리자에게 필요할 수도 있습니다.

관련 문제