django - ValueError:没有足够的值在 Django 中解压(预期 2,得到 1)
问题描述
我在将数据保存到我的数据库的两个表时遇到问题,这是PurchaseOrder
使用PurchaseOrderLineItems
Django 的通用视图CreateView
。我收到了这个错误:ValueError: not enough values to unpack (expected 2, got 1)
而且我不知道代码中的错误在哪里。我从一个 html 表(每行有一个复选框)中获取数据,该表由另一个名为的表生成,该表Masterlist
将保存在PurchaseOrderLineItems
.
这是我通过搜索如何保存数据来尝试的。我在 CreateView 类中创建了一个 post 函数。
class PurchaseOrderCreateView(LoginRequiredMixin, CreateView):
model = PurchaseOrder
fields = ['project_site', 'supplier']
def form_valid(self, form):
form.instance.prepare_by = self.request.user
return super().form_valid(form)
def get_context_data(self, **kwargs):
kwargs['object_list'] = Masterlist.objects.all()
return super(PurchaseOrderCreateView, self).get_context_data(**kwargs)
def post(self, request, *args, **kwargs):
po = PurchaseOrder.objects.all()
if request.method == 'POST':
get_list = request.POST.getlist('checks[]')
for item in get_list:
get_id = Masterlist.objects.filter(item[0])
save_to_pol = PurchaseOrderLineItems(item_no=get_id.item_no, description=get_id.description, dimension=get_id.dimension, unit=get_id.unit, quantity=get_id.quantity, cost=get_id.cost, total=get_id.cost * get_id.quantity, po_fk=pk)
save_to_pol.save()
return super().post(request)
错误回溯:
Environment:
Request Method: POST
Request URL: http://localhost:8000/lastmile/purchaseorder/new/
Django Version: 2.1.4
Python Version: 3.7.1
Installed Applications:
['users.apps.UsersConfig',
'lastmile.apps.LastmileConfig',
'crispy_forms',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "/Users/workstationthreesoftwaredeveloper/JXMTSI/Projects/Office/Application/Web-Application/Django/environ/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/Users/workstationthreesoftwaredeveloper/JXMTSI/Projects/Office/Application/Web-Application/Django/environ/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
126. response = self.process_exception_by_middleware(e, request)
File "/Users/workstationthreesoftwaredeveloper/JXMTSI/Projects/Office/Application/Web-Application/Django/environ/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
124. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/workstationthreesoftwaredeveloper/JXMTSI/Projects/Office/Application/Web-Application/Django/environ/lib/python3.7/site-packages/django/views/generic/base.py" in view
68. return self.dispatch(request, *args, **kwargs)
File "/Users/workstationthreesoftwaredeveloper/JXMTSI/Projects/Office/Application/Web-Application/Django/environ/lib/python3.7/site-packages/django/contrib/auth/mixins.py" in dispatch
52. return super().dispatch(request, *args, **kwargs)
File "/Users/workstationthreesoftwaredeveloper/JXMTSI/Projects/Office/Application/Web-Application/Django/environ/lib/python3.7/site-packages/django/views/generic/base.py" in dispatch
88. return handler(request, *args, **kwargs)
File "/Users/workstationthreesoftwaredeveloper/JXMTSI/Projects/Office/Application/Web-Application/Django/Application/ERP/lastmile/views.py" in post
57. get_id = Masterlist.objects.filter(item[0])
File "/Users/workstationthreesoftwaredeveloper/JXMTSI/Projects/Office/Application/Web-Application/Django/environ/lib/python3.7/site-packages/django/db/models/manager.py" in manager_method
82. return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/Users/workstationthreesoftwaredeveloper/JXMTSI/Projects/Office/Application/Web-Application/Django/environ/lib/python3.7/site-packages/django/db/models/query.py" in filter
844. return self._filter_or_exclude(False, *args, **kwargs)
File "/Users/workstationthreesoftwaredeveloper/JXMTSI/Projects/Office/Application/Web-Application/Django/environ/lib/python3.7/site-packages/django/db/models/query.py" in _filter_or_exclude
862. clone.query.add_q(Q(*args, **kwargs))
File "/Users/workstationthreesoftwaredeveloper/JXMTSI/Projects/Office/Application/Web-Application/Django/environ/lib/python3.7/site-packages/django/db/models/sql/query.py" in add_q
1263. clause, _ = self._add_q(q_object, self.used_aliases)
File "/Users/workstationthreesoftwaredeveloper/JXMTSI/Projects/Office/Application/Web-Application/Django/environ/lib/python3.7/site-packages/django/db/models/sql/query.py" in _add_q
1287. split_subq=split_subq,
File "/Users/workstationthreesoftwaredeveloper/JXMTSI/Projects/Office/Application/Web-Application/Django/environ/lib/python3.7/site-packages/django/db/models/sql/query.py" in build_filter
1161. arg, value = filter_expr
Exception Type: ValueError at /lastmile/purchaseorder/new/
Exception Value: not enough values to unpack (expected 2, got 1)
我想要的是当用户填写字段PurchaseOrder
然后检查 html 表中的项目(由 生成Masterlist
)并点击按钮时,它会将检查的项目保存在PurchaseOrderLineItems
解决方案
推荐阅读
- java - 我试图在 4 名玩家之间平均处理一副 52 张扑克牌,这意味着他们每人将有 13 张牌。每张只能发牌 4 张
- python - 当用户输入数字时,它应该得到扩展
- python - 带有代理的 Python 请求导致 SSLError WRONG_VERSION_NUMBER
- git - CI/CD 中的拉取请求和合并操作
- heroku - 尝试运行不和谐机器人时出现错误“node_modules check into source control”
- javascript - 如何从服务器获取的数据中保存和写入可执行文件?
- python - Python中的正态伽马分布
- pandas - YFinance 上的 Pandas 数据框
- r - 将插值模型数据列添加到 r 中的字段数据集
- python - 在 url 中传递 id 以获取对象信息