2017-12-09 1 views
1

수량, 요율, 기본 사용량 (사용 불가능), 부가가치세, 기타 소비 및 net_amount (사용 불가능)와 같은 필드가있는 양식이 있습니다. basic_amount 필드는 quantity와 rate의 계산이고 net_amount는 basic_amount, other_expenses 및 vat의 계산입니다. 이를 위해 사용자가 양식을 제출할 때 데이터베이스에 저장하기 위해 신호를 사용했습니다. 양식을 제출하면 basic_amount 및 net_amount가 필요하다는 오류가 발생하지만 blank = True, null = True 특성을 전달했습니다.사용 불가 필드가 null = True로 전달 된 후 필수로 표시됩니다.

어떻게 지금 basic_amount 및 net_amount를 저장할 수 있습니까?

여기

class PurchaseOrder(models.Model): 
    item = models.ForeignKey(Item, blank=True, null=True) 
    quantity = models.PositiveIntegerField(default=0) 
    rate = models.DecimalField(default=0.0, max_digits=100, decimal_places=2) 
    basic_amount = models.DecimalField(default=0.0, max_digits=100, decimal_places=2, blank=True, null=True) 
    vat = models.CharField(max_length=10, blank=True, null=True) 
    other_expenses = models.DecimalField(default=0.0, max_digits=100, decimal_places=2) 
    net_amount = models.DecimalField(default=0.0, max_digits=100, decimal_places=2, blank=True, null=True) 

def save_basic_amount_and_net_amount(sender, instance, *args, **kwargs): 
    if (instance.quantity and instance.rate): 
     instance.basic_amount = instance.quantity * instance.rate 
    if (instance.basic_amount and instance.vat and instance.other_expenses): 
     instance.net_amount = instance.amount - instance.other_expenses - instance.vat 
pre_save.connect(save_basic_amount_and_net_amount, sender=PurchaseOrder) 


class PurchaseOrderForm(forms.ModelForm): 
    basic_amount = forms.DecimalField(disabled=True) 
    net_amount = forms.DecimalField(disabled=True) 
    class Meta: 
     model = PurchaseOrder 
     exclude = ('office', 'timestamp', 'updated',) 

def purchase_order(request): 
    form = PurchaseOrderForm(request.POST or None) 
    if request.method == "POST" and form.is_valid(): 
     office_instance = OfficeSetup.objects.get(owner=request.user) 
     new_form = form.save(commit=False) 
     new_form.office = office_instance 
     new_form.save() 
     messages.success(request, 'Thank you') 
     return redirect('purchase-order-lists') 
    messages.warning(request, "Correct the errors below") 
    context = { 
     "form": form, 
    } 
    return render(request, 'dashboard/purchase_order/purchase_order.html', context) 

답변

0

blank=Truenull=True 데이터베이스가 아닌 형태로 허용 무엇 관련 내 코드입니다. 값을 양식에서 비워 둘 수 있으면 required=False을 양식 정의에 추가하십시오. 예를 들면 다음과 같습니다.

class PurchaseOrderForm(forms.ModelForm): 
    basic_amount = forms.DecimalField(disabled=True, required=False) 
    ... 
+0

필자는 modelform을 사용할 때 필드에 blank = True, null = True가 있으면 필요하지 않다고 생각했습니다. 당신의 도움을 주셔서 감사합니다. –

관련 문제