Django: обновить проблему в поле выбора - PullRequest
0 голосов
/ 07 сентября 2011

У меня есть choiceField, вызываемый из context_processors, чтобы он мог появляться на всех страницах моего сайта. Он предоставляет проекты, существующие в базе данных. Проблема в том, что он не обновляется правильно. Я удалил некоторые записи в своей базе данных, и они все еще в моем выборе. Также я бы хотел, чтобы он обновлялся автоматически, когда пользователь создает новый проект.

Вот моя форма и как я ее называю. Если у кого-то есть предложение, оно будет оценено.

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:

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}

1 Ответ

3 голосов
/ 07 сентября 2011

для первой части перемещения project_choices внутри init , поэтому она генерируется при вызове формы, а затем обновляется при обновлении.

...