2011-01-19 4 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

@ Gregor Fixed. – 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가 아닌 datefield를 사용하고 있습니다. – Shehzad009

+0

업데이트를 확인하십시오. 첫 번째 방법은 다음과 같은 오류를 나타 냈습니다. "데이터가 유효하지 않아 StorageItem을 변경할 수 없습니다." 두 번째 방법은 나에게이 오류를 주었다 : (1048, "Column 'type_id'는 null 일 수 없다). 왜 type_id가 영향을 받는지 확실하지 않습니다. – Shehzad009

+0

미안하지만, 나쁘다. 나는 date 대신 datetime.datetime을 사용했다. –