python - 为什么我会收到此错误?太多值无法解包(预期 2)
问题描述
我正在创建一个股票博客,并在 views.py 中定义了数据库中的股票,但我不明白这个错误是什么意思,所以我需要一些帮助,在此先感谢!这是相关的代码部分,因此您可以看到这里发生了什么。
追溯
Traceback (most recent call last):
File "C:\Users\snin2\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "C:\Users\snin2\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\snin2\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\snin2\Desktop\basura\lapagina\app1\views.py", line 62, in StockView
stock_sym = StockNames.objects.get(StockNames.objects.all())
File "C:\Users\snin2\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\snin2\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\query.py", line 404, in get
clone = self._chain() if self.query.combinator else self.filter(*args, **kwargs)
File "C:\Users\snin2\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\query.py", line 904, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "C:\Users\snin2\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\query.py", line 923, in _filter_or_exclude
clone.query.add_q(Q(*args, **kwargs))
File "C:\Users\snin2\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\sql\query.py", line 1350, in add_q
clause, _ = self._add_q(q_object, self.used_aliases)
File "C:\Users\snin2\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\sql\query.py", line 1377, in _add_q
child_clause, needed_inner = self.build_filter(
File "C:\Users\snin2\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\sql\query.py", line 1247, in build_filter
arg, value = filter_expr
ValueError: too many values to unpack (expected 2)
视图.py
def StockView(request, sym):
stock_sym = StockNames.objects.get(StockNames.objects.all())
stock_posts = Post.objects.filter(stock__symbol=sym)
return render(request, 'app1/stockview.html', {'stocks':stock_posts, 'sym':sym, 'stock_sym':stock_sym})
urls.py(最后一个 urlpattern)
from django.urls import path
from app1 import views
from .views import PostView, ArticleDetailView, AddPostView, UpdatePostView, DeletePostView, AddCategoryView, CategoryView, LikeView, MyPostsView, AddCommentView, UpdateCommentView, DeleteCommentView
app_name = 'app1'
urlpatterns = [
path('post/', PostView.as_view(), name = 'Post'),
path('article/<int:pk>', ArticleDetailView.as_view(), name = 'article-detail'),
path('add_post/',AddPostView.as_view(), name='addpost'),
path('update_post/<int:pk>', UpdatePostView.as_view(), name = 'updatepost'),
path('delete_post/<int:pk>', DeletePostView.as_view(), name = 'deletepost'),
path('add_category/', AddCategoryView.as_view(), name = 'add_category'),
path('category/<str:cats>/', views.CategoryView, name = 'category'),
path('category-list/', views.CategoryListView, name ='category-list'),
path('like/<int:pk>/', views.LikeView, name = 'like_post'),
path('my_posts/', views.MyPostsView.as_view(), name = 'my_posts'),
path('article/<int:pk>/add_comment/', AddCommentView.as_view(), name = 'add_comment'),
path('update_comment/<int:pk>', UpdateCommentView.as_view(), name = 'updatecomment'),
path('delete_comment/<int:pk>', DeleteCommentView.as_view(), name = 'deletecomment'),
path('stock/<str:sym>/', views.StockView, name = 'stock'),
]
模型.py
class StockNames(models.Model):
name = models.CharField(max_length=255)
symbol = models.CharField(max_length=255)
def __str__(self):
return self.symbol
class Post(models.Model):
title = models.CharField(max_length= 255)
header_image = models.ImageField(null = True, blank = True, upload_to = 'images/')
author = models.ForeignKey(User, on_delete=models.CASCADE)
body = RichTextField(blank = True, null = True)
#body = models.TextField()
post_date = models.DateField(auto_now_add=True)
category = models.CharField(max_length=255, default='coding')
snippet = models.CharField(max_length=255)
likes = models.ManyToManyField(User, related_name = 'blog_posts')
stock = models.ForeignKey(StockNames, null=True, on_delete = models.CASCADE)
解决方案
in的get
方法StockNames.objects.get
应该返回一行,并且它的正确参数就像StockNames.objects.get(pk=1)
您需要所有股票代码(没有任何过滤器或排序),您可以使用:
stock_sym = StockNames.objects.all()
推荐阅读
- python - 使用 stomp.py 的 Artemis AMQ 订阅者需要哪些证书来建立与服务器的 SSL 连接
- java - Kafka 消费者错误流帧描述符损坏
- json - 相当于 XML 的 JSON
- salesforce - SFCC SFRA pdict 生日(月)?
- python - 如何在不创建视图的情况下从 SQL 查询中获取列名和数据类型
- java - Onclick在fragment xml中操作时,app崩溃
- cloud-foundry - Cloud Foundry 中的延迟
- splunk - 如何查询 Splunk Dashboard 信息
- lit-element - 如何在 LitElement 中将嵌套数据结构作为属性传递?
- django - Token 类型的对象不是 JSON 可序列化的