首页 > 解决方案 > 使用不在模型中的字段扩展 django 表单,导致错误,只能连接列表,而不是元组

问题描述

我正在完成一个电子商务应用程序,最后阶段是实施订单并使用条带处理付款。

我想向用户展示一个表单,他们可以在其中输入客户详细信息,以及将发送到条带但不会存储在本地的卡详细信息(卡号、到期日期和 cvv)。因此,在我用于表单的模型中没有与存储卡号相关的字段。

在寻找我的查询的答案时,我遇到这个问题和答案,这似乎是解决方案。

但是,当我尝试以相同的方式扩展表单时,出现错误:

fields = OrderForm.Meta.fields + ('card_num', 'exp_month', 'exp_year', 'cvc')
TypeError: can only concatenate list (not "tuple") to list

据我所知,我正在做与该问题的答案中提出的完全相同的事情,所以我不确定我为什么会收到这个错误。

我正在扩展的 forms.py:

class OrderForm(forms.ModelForm):
    class Meta:
        model = Order
        fields = ['first_name', 'last_name', 'email',
        'address', 'zipcode', 'city', 'state']

我尝试在我的views.py中扩展表单:

class OrderPayForm(OrderForm):

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

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

我在做什么与我所遵循的公认答案不同的地方有什么我遗漏的东西吗?

标签: pythondjangodjango-formsdjango-views

解决方案


错误告诉你究竟出了什么问题。使用列表而不是元组:

fields = OrderForm.Meta.fields + ['card_num', 'exp_month', 'exp_year', 'cvc']

推荐阅读