Предварительно заполненная задача о наборе форм в Django - PullRequest
2 голосов
/ 23 декабря 2010

Я пытаюсь использовать модельные наборы с Django. Когда я загружаю шаблон формы, я вижу, что он заполнен предыдущими значениями. Есть ли механизм кэширования, который я должен остановить, или как?

Спасибо за вашу помощь, вот мой код:

models.py

class FooModel( models.Model ):

    a_field     = models.FloatField()
    b_field     = models.FloatField()

    def __unicode__( self ):
        return self.a_field

forms.py

from django.forms.models import modelformset_factory

FooFormSet = modelformset_factory(FooModel)

views.py

def foo_func(request):

    if request.method == 'POST':

        formset = FooFormSet(request.POST, request.FILES, prefix='foo_prefix' )

        if formset.is_valid():

            formset.save()

            return HttpResponseRedirect( '/true/' )

        else:

            return HttpResponseRedirect( '/false/' )

    else:

        formset = FooFormSet(prefix='foo_prefix')

    variables = RequestContext( request , { 'formset':formset , } )

    return render_to_response('footemplate.html' , variables )

шаблон:

<form method="post" action=".">
{% csrf_token %}
    <input type="submit" value="Submit" />
   <table id="FormsetTable" border="0" cellpadding="0" cellspacing="0">
       <tbody>
           {% for form in formset.forms %}
           <tr>
              <td>{{ form.a_field }}</td>
              <td>{{ form.b_field }}</td>
           </tr>
           {% endfor %}
       </tbody>
   </table>
   {{ formset.management_form }}
</form>

1 Ответ

6 голосов
/ 30 марта 2011

Основная проблема здесь в строке:

formset = FooFormSet(prefix='foo_prefix')

При создании экземпляра FooFormSet () queryset, используемый для создания форм, (по умолчанию):

FooModel.objects.all()

Так что, если у вас уже есть несколько FooModel () в вашей базе данных, они будут перечислены. В этом случае вы можете использовать:

formset = FooFormSet(prefix='foo_prefix', queryset=FooModel.objects.none())

Более подробную информацию об этом вы можете найти в документации Django:

http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#changing-the-queryset

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...