Py学习  »  Django

在django表单定义中为与模型不对应的扩展表单添加样式

Jake Rankin • 5 年前 • 1176 次点击  

我有一个django表单,我正在使用表单处理订单和卡支付。在我的视图中,我已经扩展了我的表单,使之具有信用卡字段,因为这些字段与我的模型不对应,因为我没有将它们保存在数据库中。

在我的 表单 ,我正在为表单字段指定类属性,如下所示:

class OrderForm(forms.ModelForm):
    class Meta:
        model = Order
        fields = ['first_name', 'last_name', 'email',
        'address', 'zipcode', 'city', 'state']
        widgets = {
        'first_name': forms.TextInput(attrs={'class': 'sizefull s-text7 p-l-22 p-r-22', 'placeholder': 'First Name'}),
        'last_name': forms.TextInput(attrs={'class': 'sizefull s-text7 p-l-22 p-r-22', 'placeholder': 'Last Name'}),
        'email': forms.TextInput(attrs={'class': 'sizefull s-text7 p-l-22 p-r-22', 'placeholder': 'E-Mail'}),
        'address': forms.TextInput(attrs={'class': 'sizefull s-text7 p-l-22 p-r-22', 'placeholder': 'Address'}),
        'zipcode': forms.TextInput(attrs={'class': 'sizefull s-text7 p-l-22 p-r-22', 'placeholder': 'Zipcode'}),
        'city': forms.TextInput(attrs={'class': 'sizefull s-text7 p-l-22 p-r-22', 'placeholder': 'City'}),
        'state': forms.TextInput(attrs={'class': 'sizefull s-text7 p-l-22 p-r-22', 'placeholder': 'State'}),
        }

我知道将演示和业务逻辑混合在一起是不可取的,但是我有一个严格的截止日期,而且我正在使用一个带有高级css的付费模板,我不完全理解它,所以这是我迄今为止找到的工作方法。我将在稍后阶段修改此内容,以便通过模板标记添加类。

不过,由于这是工作,我想继续使用这种方法。

我的问题是,在我的视图中,我无法以相同的方式将属性分配给扩展表单,如下所示:

class OrderPayForm(OrderForm):

    card_num = forms.CharField(max_length=16)
    exp_month = forms.CharField(max_length=2)
    exp_year = forms.CharField(max_length=2)
    cvc = forms.CharField(max_length=3)

    class Meta(OrderForm.Meta):
        fields = OrderForm.Meta.fields + ['card_num', 'exp_month', 'exp_year', 'cvc']

试图在我的 表单 或者在我的 VIEW 像:

class OrderPayForm(OrderForm):

    card_num = forms.CharField(max_length=16)
    exp_month = forms.CharField(max_length=2)
    exp_year = forms.CharField(max_length=2)
    cvc = forms.CharField(max_length=3)

    class Meta(OrderForm.Meta):
        fields = OrderForm.Meta.fields + ['card_num', 'exp_month', 'exp_year', 'cvc']

        widgets = {
        'card_num': forms.TextInput(attrs={'class': 'sizefull s-text7 p-l-22 p-r-22', 'placeholder': 'Card Number'}),
        }

这不会导致错误消息,但会导致我的所有窗体字段丢失在my forms.py中分配给的类。

我做错什么了?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40195
 
1176 次点击  
文章 [ 1 ]  |  最新文章 5 年前