2013-03-07 1 views
0

나는 a question을 게시했지만 결과가 없습니다. 나는 그것을 제기 할 수 있습니다 두려워 ...Django Admin - 중개자 양식을 사용하여 추가

관리자에서, 나는 (사용자가 단순히 검색 필드와 버튼으로 구성되어있을 것입니다 다른 형태로 일반 양식보다 직접) . '검색'양식의 유효성을 검사 한 후 사용자는 표준 인스턴스 추가/변경 양식으로 인스턴스 데이터를 보냅니다. 이것을 달성하는 가장 좋은 방법은 무엇입니까?

답변

0

그래서이 질문에 대한 답변이 부족한 Tumbleweeds 청동 색의 별이 있습니다. 나는, 추가 '추가'보기

from django import forms 
from MyApp.models import MyModel 

class LookupForm(forms.Form): 
    pk = '' 
    url = forms.URLField(max_length=_URLMAXLEN, label='Video URL', 
       widget=forms.TextInput(attrs={'size':'60', 'autofocus':'autofocus'})) 

    def clean_url(self): 
     value = self.cleaned_data['url'] 

     # some validation of 'value' here 
     # ... 

     self.pk = somefoo(value) 
     return value 

그리고 뷰에서

의 양식을 만들어 내 모델의 관리자

def get_urls(self): 
    urls = super(MyModelAdmin, self).get_urls() 
    addl = patterns(', 
     (r'^add/$', 'MyApp.views.my_add_view) 
    ) 

return addl + urls 

에 get_urls 방법 ... 다음과 같이 부분적으로 해결

을 종료 나는 CANN

from django.shortcuts import render 
from django.core.urlresolvers import reverse 
from django.http import HttpResponseRedirect 
from MyApp.forms import LookupForm 

def my_add_view(request): 
    confirm = '' 
    if request.method == 'POST': 
     form = LookupForm(request.POST) 

     if form.is_valid(): 
      if 'confirm_button' in request.POST: 
       foo_save() # save model instance 

       # LookupForm's 'pk' property set during some clean_ method 
       href = reverse('admin:MyApp_MyModel_change', args=(form.pk,)) 
       return HttpResponseRedirect(href) 

      elif 'search_button' in request.POST: 
       confirm = foo_context() # some context from the search results 

    else: 
     form = LookupForm() 

    return render(request, 'my_template.html', {'form': form, 'confirm': confirm}) 

불행히도에게 모델 인스턴스의 유효성을 검사하고 저장 한 후 변경 양식에 리디렉션 인스턴스 데이터로 변경 양식을 표시하는 것을 목표로 삼습니다. change_form을 저장하고 리디렉션하는 대신, 직접 연결할 수 있기를 바랍니다. MyModelForm(instance=some_instance)