为什么会出现此错误?无法解开太多值预期为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,line 904,in filter
    return self._filter_or_exclude(False,*args,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)

views.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'),]

models.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)

解决方法

get中的StockNames.objects.get方法应该返回一行,并且正确的参数类似于StockNames.objects.get(pk=1) 如果您需要所有股票代号(无需任何过滤器或排序),则可以使用:

    stock_sym = StockNames.objects.all()