페이지를 떠나지 않고 장고에서 직접 만들거나 적어도 제출 및 다시 표시 할 수는 없습니다. 양식을 제출하지 않으려는 경우 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
메서드로 사전과 같은 구문으로 구문 분석하는 방법을 알고있는 사용자 정의 필드 유형을 만들 수 있습니다.하지만 좀 더 고급입니다.
물론 다른 설정이 관리자에게 필요할 수도 있습니다.