Django - 匹配的查询不存在

Posted

技术标签:

【中文标题】Django - 匹配的查询不存在【英文标题】:Django - matching query does not exist 【发布时间】:2015-01-28 20:29:43 【问题描述】:

我正在处理一个 Django 项目,我收到了这个错误,“状态匹配查询不存在。”为什么会这样?状态在模型商店中,你能解释一下这个错误以及如何解决它吗?

谢谢。 浏览量:

def Test(request):
    stores = Store.objects.all()

    data = []

    for store in stores:
        data.append(
            'id': store.id,
            'name': store.name,
            'address': store.address,
            'state': store.state,
        )

    return HttpResponse(json.dumps(data), 'application/json')

型号:

class State(models.Model):
    name = models.CharField(max_length=255)
    shortname = models.CharField(max_length=100)


    def __unicode__(self):
        return self.name


class City(models.Model):
    name = models.CharField(max_length=255)
    state = models.ForeignKey(State)

    def __unicode__(self):
        return self.name


class Store(models.Model):
    name = models.CharField(max_length=255, null=True, blank=True)
    address = models.CharField(max_length=255, blank=True, null=True)
    lon = models.FloatField(blank=True, null=True)
    lat = models.FloatField(blank=True, null=True)
    state = models.ForeignKey(State)
    city = models.ForeignKey(City)


    def __unicode__(self):
        return self.name

追溯:

环境:

请求方法:GET 请求地址:http://127.o.o.1:8000/posts/Test/

Django 版本:1.7.1 Python 版本:2.7.6 已安装的应用程序: ('django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'clients', “cobrands”、“core”、“posts”、“bootstrapform”、“rest_framework”) 已安装的中间件: ('django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware')

追溯:文件 “/home/tabzz/c-dev/local/lib/python2.7/site-packages/django/core/handlers/base.py” 在 get_response 111. response = Wrapped_callback(request, *callback_args, **callback_kwargs) 测试中的文件“/home/tabzz/c/posts/views.py” 34.'状态':store.state,文件“/home/tabzz/c-dev/local/lib/python2.7/site-packages/django/db/models/fields/related.py” 在得到 572. rel_obj = qs.get() 文件“/home/tabzz/c-dev/local/lib/python2.7/site-packages/django/db/models/query.py” 在得到 357. self.model._meta.object_name)

异常类型:DoesNotExist at /posts/Test/ 异常值:状态 匹配的查询不存在。

【问题讨论】:

请发布您的错误消息/堆栈跟踪,谢谢 :)! 你确定这个错误是在点击测试视图时产生的,而不是另一个错误?通常这个错误会在 Store.objects.get() 查询中弹出。 我确定,Jingo,这里有堆栈跟踪 【参考方案1】:

您的数据库中似乎有一个没有 state 的 Store 模型。当您尝试在此处访问state 时:

data.append(
    'id': store.id,
    'name': store.name,
    'address': store.address,
    'state': store.state,
)

Django 抛出一个错误,因为stateStore 上的ForeignKey,当您使用store.state 访问它时它必须查找它。如果state 为空并且您没有设置ForeignKey 以允许None 值与null=True,Django 将引发DoesNotExist 异常。

【讨论】:

我明白了,谢谢,现在我遇到了这个问题。 " 不是 JSON 可序列化的" 我打印“数据”并保存这样的状态“'state':”我如何只保存“new york”? :S @Tabbz 你需要改用'state': store.state.name

以上是关于Django - 匹配的查询不存在的主要内容,如果未能解决你的问题,请参考以下文章

Django:SocialApp 匹配查询不存在

对 Django 用户匹配查询不存在消息感到沮丧

django admin - 匹配的查询不存在

Django 2.1 令牌匹配查询不存在

ContentType 匹配查询不存在。 django=3.0.7

Django REST EmailAddress 匹配查询不存在