context_processors에서 호출 된 choiceField가있어 내 사이트의 모든 페이지에 나타날 수 있습니다. 데이터베이스에있는 프로젝트를 제공합니다. 문제는 제대로 새로 고쳐지지 않는다는 것입니다. 데이터베이스의 일부 레코드를 삭제했지만 여전히 내 레코드에 있습니다. 또한 사용자가 새 프로젝트를 만들 때 자동으로 새로 고침하고 싶습니다.Django : 선택 필드 새로 고침
여기 내 양식 및 전화 방법입니다. 누구든지 제안이 있다면, 인정 될 것이다.
forms.py :
class SelectForm(forms.Form):
def __init__(self, *args, **kwargs):
super(SelectForm, self).__init__(*args, **kwargs)
self.fields['project'].initial=[(p.proj_id, p.proj_name+"_"+p.proj_description) for p in Project.getProjectParent(Project())]
project_choices = [(p.proj_id, p.proj_name+"_"+p.proj_description) for p in Project.getProjectParent(Project())]
project = forms.ChoiceField(project_choices)
def save(self):
project = self.cleaned_data['project']
src = ''
p = {'proj': project, 'src': src}
return p
context_processors.py : 첫 번째 부분은 이동 project_choices
위한
def display_select_proj(request):
if request.method == "POST" and (request.POST.get("action", "") == "Change"):
form = SelectForm(request.POST)
if form.is_valid():
p = form.save()
proj = p['proj']
src = p['src']
request.session['proj'] = proj
else:
proj = request.session['proj']
src = ""
form = SelectForm(initial={'project': proj})
return {'select_form': form, 'proj': proj, 'src': src}
getProjectParent에 대한 코드를 제공해야한다고 생각합니다. –
프로젝트 부모를위한 코드는 단지 sql 쿼리입니다. Project.objects.all()에서'p에 대해 같은 결과를 준다. – Johanna