2012-06-08 2 views
0

InvoiceAdmin 모델에서 ActionAdminInline로 사용되는 ActionAdmin 모델이 있습니다.save_formset 및 save_model의 부모 개체 필드에 액세스

InvoiceModel에서 일부 값을 자동으로 설정하려면 save_formset을 재정의합니다. 각 Action 인스턴스의 값을 설정하는 것은 문제가 없지만 부모 송장 필드를 가져올 수 없습니다.

가 나는 자기 또는 나는 또한 다른 스레드에서 볼 form.project.pk으로 그걸 얻기 위해 노력 self.project.pk해야했다 생각했다.

내가받은 오류는 InvoiceAdmin에 해당 필드가 없습니다. 그것은 나에게 의미가있다. self는 InvoiceAdmin 객체이고 Invoice 객체는 아니다. Invoice 객체 필드를 가져 와서 instance.invoice Action과 instance.project를 설정해야한다고 생각합니다.

누군가이 부모 개체 값을 얻는 방법을 알고 있습니까 ???

은 다음과 같습니다

class ActionAdmin(admin.ModelAdmin): 
... 


class ActionInlineForm(ModelForm): 
    class Meta: 
     model = Action 
     fields = ['name','tax', 'price','duration_extern',] 


class ActionInline(admin.TabularInline): 
    model = Action 
    form = ActionInlineForm 
    extra = 0 
    ordering = ('date_finished',) 
    can_delete=False 
    readonly_fields = ['non_editable_date_finished','non_editable_duration','get_remove_invoice_pos_link'] 




class InvoiceAdmin(admin.ModelAdmin): 
... 
... 
... 
    inlines = [ActionInline,] 
    ... 
    ... 
    ... 
    def save_formset(self, request, form, formset, change): 
     instances = formset.save(commit=False) 
     for instance in instances: 
      usr = User.objects.get(id=7) 
      try: 
      instance.created_by = instance.created_by 
      except: 
      instance.created_by = usr 

      try: 
      instance.owner = instance.owner 
      except: 
      instance.owner = usr 

      instance.modified_by = usr 

      try: 
      instance.date_created = instance.date_created 
      except: 
      instance.date_created = date.today 

      instance.date_modified = date.today: 

      ### MAN, This WORKS NOW ### 
      try: 
       instance.project = instance.project 
      except: 
      pr = Project.objects.get(id=instance.invoice.project.id) 
      instance.project = pr 


      actstat = ActionStatus.objects.get(id=2) 
      instance.actionstatus = actstat 

      try: 
      instance.actioncategory = instance.actioncategory 
      except: 
      cat = ActionCategory.objects.get(id=9) 
      instance.actioncategory = cat 

      instance.done = True 
      instance.billed = True  
      instance.save() 
     formset.save_m2m() 

이 오류 메시지입니다 : 그것은 자기 객체가 InvoiveAdmin입니다 및 송장하지 않는 것이 문제

AttributeError at /workflow/invoice/21/ 
    ... 
    Exception Type:  AttributeError 
    Exception Value: 'InvoiceAdmin' object has no attribute 'id' 
    ... 

Traceback 
    form <django.forms.models.InvoiceForm object at 0x7f7f7421de10> 
    instances [<Action: aaaaa>] 
    self <workflow.admin.InvoiceAdmin object at 0x7f7f7421dad0> 

인가? 나는 인스턴스 객체가 Action이고, ActionAdmin이 아니라는 것을 의미합니까?

답변