Проблема форм Джанго - PullRequest
       5

Проблема форм Джанго

0 голосов
/ 15 апреля 2010

Я пытаюсь создать шаблон со многими адресами (формами), где вы можете добавлять, редактировать и удалять их.

Я что-то не так с формами? Вот мои взгляды:

@login_required
def addresses(request):
    AddressesFormset = modelformset_factory(Address,
                                            can_delete = True,
                                            extra = 0,
                                            exclude = ['user'])

    log.debug('Queryset: %s', request.user.addresses.all())

    if request.method == 'POST':
        log.debug('Formset from POST')
        formset = AddressesFormset(request.POST)
        if formset.is_valid():
            log.debug('Saving form')
            formset.save()
            log.debug('Fromset from queryset')
            formset = AddressesFormset(queryset = request.user.addresses.all())
        else:
            log.debug('Form is not valid')
    else:
        log.debug('Fromset from queryset')
        formset = AddressesFormset(queryset = request.user.addresses.all())

    return render_to_response('accounts/addresses.html', locals(), context_instance = RequestContext(request))

@login_required
def add_address(request):
    address = Address.objects.create(user = request.user)
    address.save()
    return HttpResponseRedirect('/accounts/addresses/')

И шаблон:

{{ formset.management_form }}
{% for form in formset.forms %}
    <table class="accountT">
        <tr  class="accountTT">
            <td><p>Ulica, nr domu, mieszkania:</p></td>
            <td>{{ form.street.errors }}{{ form.street }}</td>
        </tr>
        <tr  class="accountTT">
            <td><p>Miejscowość:</p></td>
            <td>{{ form.city.errors }}{{ form.city }}</td>
        </tr>
        <tr  class="accountTT">
            <td><p>Kod pocztowy:</p></td>
            <td>{{ form.zipcode.errors }}{{ form.zipcode }}</td>
        </tr>
        <tr  class="accountTT">
            <td><p>Telefon kontaktowy:</p></td>
            <td>{{ form.phone.errors }}{{ form.phone }}</td>
        </tr>
        <tr>
            <td><p>Usuń:</p></td>
            <td>{{ form.DELETE }}</td>
        </tr>
        {{ form.id }}
    </table>
{% endfor %}

Edit: Проблема в том, что при добавлении формы мне нужно сохранить набор форм (в add_address ()). Хотелось бы посмотреть, как вы правильно относитесь к формам. Я совсем не понимаю;).

Спасибо заранее, Etam.

1 Ответ

0 голосов
/ 16 апреля 2010

Ну, вы не говорите, в чем ваша проблема, но вы делаете по крайней мере одну вещь неправильно.

После подтверждения правильности набора форм и его сохранения по какой-то причине вы создаете экземпляр другого набора и переходите прямо к render_to_response в конце функции, поэтому снова отображать набор пустых форм.

В этот момент вам нужно перенаправить куда-нибудь еще, например, на страницу подтверждения.

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