Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 禁用表单字段Django inlineformset_工厂_Python_Django - Fatal编程技术网

Python 禁用表单字段Django inlineformset_工厂

Python 禁用表单字段Django inlineformset_工厂,python,django,Python,Django,可能很简单 我正在尝试禁用所有表单集行上的“sub_total”字段(即该字段存在但变灰),并使用javascript使用“price_estimate”和“quantity”字段中输入的任何值更新该字段 我有以下型号: class Requisition(models.Model): create_date = models.DateTimeField(auto_now_add=True) modified_date = models.DateTimeField(auto_no

可能很简单

我正在尝试禁用所有表单集行上的“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']