Django:ValueError:调用Score.Objects.filter()时解包的值太多

时间:2019-05-04 20:00:29

标签: python django django-queryset

我在Google上看到了很多与同一错误相关的答案,但没有一个对我的情况有用。

models.py

from django.db import models
from django.db import models

class Score(models.Model):
    id = models.IntegerField(primary_key=True)
    date = models.DateField()
    team = models.CharField(max_length=100)
    opposition = models.CharField(max_length=100)
    venue = models.CharField(max_length=100)
    inning = models.IntegerField()
    batsman = models.CharField(max_length=100)
    bowler = models.CharField(max_length=100)
    overs = models.FloatField()
    runs = models.IntegerField()
    wicket = models.IntegerField()

    class Meta:
        managed = False
        db_table = 'ipl'

查询

result = Score.objects.filter(query)

query = Q(team__in=['Kings XI Punjab']) | Q(opposition__in=['Kings XI Punjab']),venue__in=['Punjab Cricket Association Stadium, Mohali'],inning__in=[1, 2],wicket__in=['0']

我在django shell中运行了相同的查询,它给了我结果。但是,当我从views.py运行此查询时,出现此错误。

错误

Internal Server Error: /
Traceback (most recent call last):
  File "/Users/shmitra/code/personal/cricketscreener/venv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/shmitra/code/personal/cricketscreener/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Users/shmitra/code/personal/cricketscreener/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/shmitra/code/personal/cricketscreener/app/views.py", line 30, in home
    result = Score.objects.filter(query)
  File "/Users/shmitra/code/personal/cricketscreener/venv/lib/python3.7/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/Users/shmitra/code/personal/cricketscreener/venv/lib/python3.7/site-packages/django/db/models/query.py", line 892, in filter
    return self._filter_or_exclude(False, *args, **kwargs)
  File "/Users/shmitra/code/personal/cricketscreener/venv/lib/python3.7/site-packages/django/db/models/query.py", line 910, in _filter_or_exclude
    clone.query.add_q(Q(*args, **kwargs))
  File "/Users/shmitra/code/personal/cricketscreener/venv/lib/python3.7/site-packages/django/db/models/sql/query.py", line 1292, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File "/Users/shmitra/code/personal/cricketscreener/venv/lib/python3.7/site-packages/django/db/models/sql/query.py", line 1320, in _add_q
    split_subq=split_subq, simple_col=simple_col,
  File "/Users/shmitra/code/personal/cricketscreener/venv/lib/python3.7/site-packages/django/db/models/sql/query.py", line 1189, in build_filter
    arg, value = filter_expr
ValueError: too many values to unpack (expected 2)

我还从数据库中粘贴了一些行。 **enter image description here**

1 个答案:

答案 0 :(得分:0)

您应该做result = Score.objects.filter(**query)