python - 使用不在模型中的字段扩展 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')
我在做什么与我所遵循的公认答案不同的地方有什么我遗漏的东西吗?
解决方案
错误告诉你究竟出了什么问题。使用列表而不是元组:
fields = OrderForm.Meta.fields + ['card_num', 'exp_month', 'exp_year', 'cvc']
推荐阅读
- javascript - NextJS API | 应用程序在部署和开发模式下工作,但在我运行下一次构建时却不行 | 被拒绝
- arrays - 追加到循环内的数组
- google-bigquery - 有没有办法在 Big-query 中过滤掉我的项目中的两个特定名称?
- php - Laravel 页面自动恢复数据,无需刷新
- mysql - SQL:如何从多个表中获取计数到一个查询中?
- c# - Radzen Blazor 对话框未关闭
- laravel - Laravel 8“在此服务器上找不到请求的资源 /dashboard。”
- xamarin - 如何将数据从 TimePicker 和 Editor 传递到 Xamarin Form 中的标签?
- python - Python奇异值分解不匹配顺序和符号
- excel - 使用表格标题作为单元格中的内容