Django - 更改内联formset textInput大小属性

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场地不会变大?

Fur*_*tor 6

编辑:它应该只是设置一个类到输入字段,并让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)