![](/img/trans.png)
[英]Django inlineformset_factory and ManyToManyField field, once again
[英]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.