2015-01-08 2 views
0

models.py :장고 forms.Form에 저장된 객체의 ID를 얻을

class Invoice(models.Model): 
    invoice_issued_on = models.DateField() 

forms.py :

class InvoiceForm(forms.Form): 
    invoice_issued_on = forms.DateField(
     input_formats=['%d/%m/%Y'], 
     initial=today.strftime("%d/%m/%Y"), 
     label=mark_safe('Issued on'), 
     widget=forms.TextInput(attrs={ 'placeholder': 'DD/MM/YYYY', 'data-date-format':'DD/MM/YYYY', 'class': 'form-control text-center' }) 
    ) 

    def save(self): 
     data = self.cleaned_data 
     invoice=Invoice(invoice_issued_on=data['invoice_issued_on']) 
     instance=invoice.save() 

질문 : 내가 ID를 얻는 방법 (데이터베이스 ID)의 송장 객체가 데이터베이스에 저장 되었습니까? 경고 form.ModelForm을 사용하지 않으므로 instance.id가 여기에서 작동하지 않습니다. 기술적 인 이유로 ModelForm을 사용할 수 없습니다.

+0

당신이 invoice.id 또는 instance.id을 시도했다 :

BTW
def save(self): data = self.cleaned_data invoice = Invoice(invoice_issued_on=data['invoice_issued_on']) invoice.save() return invoice # invoice.pk will contain id of the object 

, 객체 생성의 훨씬 짧은 버전이? – Gaurav

+0

form.Forms에서 작동하지 않습니다. 개체에 ID 또는 pk 속성이 없습니다. – sunnox

+0

데이터베이스에 개체가 저장되고 있습니까? – Gaurav

답변

1

invoice.save() 인스턴스를 반환하지 않습니다. 당신은 바로 invoice 변수에서 pk을 얻어야한다 :

def save(self): 
    data = self.cleaned_data 
    return Invoice.objects.create(invoice_issued_on=data['invoice_issued_on']) 
+0

이것이 맞다, 대단히 cataravan – sunnox

관련 문제