Python 禁用表单字段Django inlineformset_工厂
可能很简单 我正在尝试禁用所有表单集行上的“sub_total”字段(即该字段存在但变灰),并使用javascript使用“price_estimate”和“quantity”字段中输入的任何值更新该字段 我有以下型号: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
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']