繁体   English   中英

禁用表单字段Django inlineformset_factory

[英]Disable form field Django inlineformset_factory

可能很容易

我正在尝试禁用(即该字段存在但显示为灰色)所有表单集行上的“ 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

我认为我有

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

形式

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字段,无论尝试如何,它似乎都被忽略了。

任何帮助表示赞赏

我怀疑-非常基本的错误。 视图应如下所示(即不设置formset标志)。

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

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

class RequisitionLineForm(forms.ModelForm):

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM