【发布时间】:2011-11-11 23:00:42
【问题描述】:
我有一个从 context_processors 调用的choiceField,因此它可以出现在我网站的所有页面中。它提供数据库中现有的项目。问题是它没有正确刷新。 我删除了数据库中的一些记录,它们仍然在我的选择中。我还希望它在用户创建新项目时自动刷新。
这是我的表格以及我如何称呼它。如果有人有建议,将不胜感激。
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}
【问题讨论】:
-
我认为您需要提供 getProjectParent 的代码。
-
项目父代码只是一个sql查询。对于
p in Project.objects.all(),它给出了相同的结果
标签: django django-forms refresh django-database