Джанго: сохранение в поле модели - PullRequest
1 голос
/ 19 января 2011

еще один вопрос о Джанго.У меня есть форма редактирования, как это.Посмотрите на current_status в коде.

Обновлено:

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:
            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)
            item.current_item_status_date = date.today()
            item.save()
            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_status сохранить самую последнюю дату, когда форма редактировалась.То, что я также хочу сделать, это сохранить это значение в этом поле моделей.

  class StorageItem(models.Model):
       current_item_status_date = models.DateField()

1 Ответ

3 голосов
/ 19 января 2011

Является ли ItemForm ModelForm (см. Формы модели Django )?

Если это так, form.save() вернет экземпляр модели.Затем вы можете редактировать его поля, если вам нужно.Например.

my_obj = form.save()
my_obj.current_item_status_date = datetime.date.today()
my_obj.save()

Если нет, просто создайте новый экземпляр вашей модели и сохраните значение поля.

my_obj = StorageItem(current_item_status_date=datetime.date.today())
my_obj.save()
...