Вопрос Django: проблема с сохранением - PullRequest
1 голос
/ 27 февраля 2011

Здравствуйте, у меня есть форма редактирования элемента. С этой точки зрения посмотрите на item.current_item_status_date.

def edit_item(request, client_id = 0, item_id = 0):
    client = None
    item = None
    status = None
    contact = None
    status_id = request.POST.get('status_id', None)
    contact_id = request.POST.get('contact_id', None)
    save_item = request.POST.get('save_item', None)
    save_status = request.POST.get('save_status', None)

    try:
        client = models.Client.objects.get(pk = client_id)
        item = models.StorageItem.objects.get(pk = item_id)
    except:
        return HttpResponseNotFound()
    try:
        status = models.Status.objects.get(pk = status_id)
        contact = models.Contact.objects.get(pk = contact_id)
    except:
        pass
    if request.method == 'POST':
        form = forms.ItemForm(request.POST, instance = item)
        if form.is_valid() and save_item is not None:
            item.current_item_status_date = date.today()
            item.save()
            form.save(True)
            request.user.message_set.create(message = "Item {0} has been updated successfully.".format(item.tiptop_id))
            return HttpResponse("<script language=\"javascript\" type=\"text/javascript\">window.opener.location = window.opener.location; window.close();</script>")

        if status is not None and contact is not None and save_status is not None:
            current_status = models.ItemStatusHistory(item = item, contact = contact, status = status,
                                                    user = request.user)
            current_status.save()
            request.user.message_set.create(message = "Item status has been updated successfully.")
    else:
        form = forms.ItemForm(instance = item)
    title = str(client) + ' : Edit Item'
    status_list = models.Status.objects.all()
    return render_to_response('edit_item.html', {'form':form, 'title':title, 'status_list':status_list, 'item':item}, context_instance = RequestContext(request))

current_item_status_date сохраняет сегодняшнюю дату отправки формы. Однако есть небольшая проблема. В моем бланке я хочу сохранить его только когда кнопка называется новый статус выбран. Прямо сейчас, что делает моя форма редактирования элемента, это сохранение, когда выбрана кнопка Сохранить . Я хочу, чтобы моя форма сохраняла эту дату, только когда выбран новый статус , а не Сохранить .

Вот что у меня в шаблоне заказа на редактирование.

<td><input type="submit" name="save_status" value="new status"></td>
<input type="submit" name="save_item" value="Save" onclick="validate_item(this.form)">

Редактировать: : Я внес эти изменения.

#code

if request.method == 'POST':
    form = forms.ItemForm(request.POST, instance = item)
    if form.is_valid() and save_item is not None:
        form.save(True)
        request.user.message_set.create(message = "Item {0} has been updated successfully.".format(item.tiptop_id))
        return HttpResponse("<script language=\"javascript\" type=\"text/javascript\">window.opener.location = window.opener.location; window.close();</script>")
    if request.POST.get('save_status'):
        item.current_item_status_date = date.today()
        item.save()
#code

Теперь, при этом текущая дата состояния элемента сохраняется. Но только если я закрою форму (это форма, которая открывает новое окно). Это не сохраняется, когда я выбираю дату статуса и затем нажимаю сохранить. Я думаю, что он не сохраняется должным образом в поле current_item_status_date, а не в базе данных. Я могу сказать, что это не работает, когда я нажимаю на сохранение статуса, поле current_item_status не обновляется. Он обновляется только когда я закрываю форму и открываю ее снова. Единственный способ, которым это будет работать, - это перезагрузка формы при получении информации из базы данных.

Это то, что я ищу:

  • Нажатие на дату статуса должно сохранить дату.
  • Нажатие на дату статуса и затем нажатие на сохранение должны сохранить дату.
  • Простое нажатие на кнопку сохранения не должно сохранять дату статуса.

Ответы [ 2 ]

0 голосов
/ 03 марта 2011

Удаление поля current_item_status_date из form = forms.ItemForm, похоже, сработало.Таким образом, он может быть сохранен правильно.

0 голосов
/ 27 февраля 2011

Вы проверяете специально для save_item. Измените его на save_status, и вам будет хорошо, если я понимаю ваш вопрос.

 if form.is_valid() and save_status is not None:
...