【问题标题】:Django : refresh issue on selection fieldDjango:选择字段上的刷新问题
【发布时间】: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


【解决方案1】:

对于第一部分,将 project_choices 移动到 init 中,以便在调用表单时生成它,然后在刷新时更新。

【讨论】:

  • 我在 init 函数中试过:super(SelectForm, self).__init__(*args, **kwargs) project_choices = [(p.proj_id, p.proj_name+"_"+p.proj_description) for p in Project.objects.all()] self.fields['project'].initial=project_choices。然后打电话给project=forms.ChoiceField() 现在它在choiceField 中根本没有给我任何东西
  • 需要设置为选项 add self.fields['project'].choices = project_choices
猜你喜欢
  • 2011-05-28
  • 2021-02-17
  • 1970-01-01
  • 2013-08-12
  • 2019-05-21
  • 1970-01-01
  • 2020-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多