ModelChoiceField未填充先前输入的值

时间:2013-03-08 21:53:10

标签: django django-forms django-templates django-views

我创建了一个ModelChoiceForm,它正在动态填充所有没有FlatPageExtras.child_of值的flatpages。为此,我进行了以下设置:

Forms.py:

class FlatPageExtrasForm(ModelForm):
    class Meta:
        model = FlatPageExtras
        fields = ['head_content', 'endbody_content', 'new_page', 'child_of']

    def __init__(self, *args, **kwargs):
        super(FlatPageExtrasForm, self).__init__(*args, **kwargs)
        self.fields['child_of'] = forms.ModelChoiceField(queryset = FlatPage.objects.filter(sites = Site.objects.get_current()).exclude(flatpageextras__child_of__isnull=False),widget = forms.Select, required = False)        

views.py:

def edit(request, flatpage_id):
    site = Site.objects.get_current()
...
    if request.method == "POST":
        if request.POST.has_key("update"):
            return update(request, page)
...
    else:
        flatpageextras_obj, result = FlatPageExtras.objects.get_or_create(flatpage=page)
        form = FlatPageForm(instance=page)            
        form_flatpageextras = FlatPageExtrasForm(instance=flatpageextras_obj)

模板:

{{ form_flatpageextras.child_of }}<label for="id_child_of">Page on your site you would like this to appear under. </label></p>
                {% if form_flatpageextras.child_of.errors %}
                    {{  form_flatpageextras.child_of.errors }}
                {% endif %}
                <p class="help-text">If a page is selected, that will be the parent site for this one.  Leave blank if you would like no associations</p>
            </div>

这一切都有效......差点儿!当我转到提供的模板时,下拉列表就在那里,正确显示可用的flatpages,除非它最初显示为空白,即使该字段正确保存到所选页面的任何内容。如何让下拉菜单正确显示当前的选择?

0 个答案:

没有答案
相关问题