禁用表单域Django inlineformset_工厂

2024-06-06 21:39:24 发布

您现在位置:Python中文网/ 问答频道 /正文

可能很简单

我正在尝试禁用(即该字段存在但变灰)所有formset行上的“sub_total”字段,并使用javascript将输入“price_estimate”和“quantity”字段中的值更新该字段。在

我有以下型号:

class Requisition(models.Model):
    create_date = models.DateTimeField(auto_now_add=True)
    modified_date = models.DateTimeField(auto_now=True)
    description = models.CharField(max_length=128, null=True, blank=True,)
    total = models.DecimalField(decimal_places=2, max_digits=20, null=True)

class RequisitionLine(models.Model):
    requisition = models.ForeignKey(Requisition)
    product = models.CharField(max_length=50, blank=False)
    quantity = models.PositiveIntegerField()
    price_estimate = models.DecimalField(decimal_places=2, max_digits=20)
    sub_total = models.DecimalField(decimal_places=2, max_digits=20, null=True)

    @property
    def get_sub_total(self):
        return self.quantity * self.price_estimate

在我看来

^{pr2}$

在形式上

class RequsitionForm(forms.ModelForm):
    class Meta:
        model = models.Requisition
        fields = ['description']

class RequisitionLineForm(forms.BaseInlineFormSet):

    sub_total = forms.DecimalField(disabled=True, required=False)

    class Meta:
        model = models.RequisitionLine
        fields = ['product', 'quantity', 'price_estimate', 'sub_total']

除了上面的代码-我还试图修改init上的sub峎total字段,但是无论我尝试什么,它似乎都被忽略了。在

有什么帮助吗


Tags: selftruemodelsnullpricemaxquantityclass
1条回答
网友
1楼 · 发布于 2024-06-06 21:39:24

正如我所怀疑的-非常基本的错误。视图应该是这样的(即不设置formset标志。在

Formset = inlineformset_factory(models.Requisition,
                                models.RequisitionLine,
                                form = forms.RequisitionLineForm,
                                fields=('product', 'price_estimate', 'quantity', 'sub_total'),
                                extra=2)

除此之外-应该修改表单以使用ModelForm(而不是BaseInlineFormSet)

^{pr2}$

相关问题 更多 >