Gar*_*nzo 2 django django-forms inline-formset
我有一个只有三个字段的内联formset:
class Estimate_Product_Details(models.Model):
proposalID = models.ForeignKey(Estimate_Construction, verbose_name='Proposal ID')
CID = models.ForeignKey(Product, verbose_name = 'CID')
qty = models.DecimalField(max_digits = 7, decimal_places = 2, verbose_name = 'Quantity')
def __unicode__(self):
return u'%s -- %s' % (self.proposalID, self.CID)
Run Code Online (Sandbox Code Playgroud)
然后我从该模型创建一个表单:
class Product_Form(ModelForm):
class Meta:
model = Estimate_Product_Details
fields = ('CID', 'qty')
widgets = {
'qty' : forms.TextInput(attrs={'size':30})
}
Run Code Online (Sandbox Code Playgroud)
我的目标是让qty输入字段非常小(我有30个用于测试).但是,当我通过内联formset渲染此表单时,该属性根本没有设置.这是在我的视图中创建formset:
pFormSet = inlineformset_factory(Estimate_Construction, Estimate_Product_Details, form = Product_Form)
Run Code Online (Sandbox Code Playgroud)
我哪里错了?为什么qty场地不会变大?
编辑:它应该只是设置一个类到输入字段,并让CSS指定宽度.这样你就可以将它传递给不同的模板,例如不同的客户端.
也许不是使用.attrs['size'] = 30use,而是.attrs['class'] = 'some_class'在HTML模板中定义类并处理不同的大小.
这应该工作:
class Product_Form(ModelForm):
def __init__(self, *args, **kwargs):
super(Product_Form, self).__init__(*args, **kwargs)
self.fields['qty'].widget.attrs['size'] = 30
class Meta:
model = Estimate_Product_Details
fields = ('CID', 'qty')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5366 次 |
| 最近记录: |