2011-01-19 2 views
1

другой вопрос-ответ django. У меня есть такая форма редактирования. Посмотрите на current_status в коде.Django: сохранение в поле модели

Это было обновлено:

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() 
+0

Извините, но я думаю, что ваш вопрос действительно не понятно, в любом виде :-) Вы могли бы сломать вопрос по-другому, разрывая код из первого блока, который не имеет отношения к вопросу и т.д. . –

+0

@ Грегор исправлен. – Shehzad009

ответ

3

ItemForm Является ModelForm (см Django Model Forms)?

Если так, 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() 
+0

Я получаю эту ошибку, когда пытаюсь сделать второй метод. Объект «method_descriptor» не имеет атрибута «now». Просто чтобы напомнить вам, я использую дату, а не datetimeField. – Shehzad009

+0

OK обновление. 1-й метод дал мне эту ошибку: «StorageItem не может быть изменен, потому что данные не проверялись». Второй метод дал мне эту ошибку: (1048, «Столбец« type_id »не может быть нулевым»). Не совсем уверен, почему затронуты type_id. – Shehzad009

+0

Извините, мой плохой. Я привык работать с datetime.datetime вместо даты. –

Смежные вопросы