Django - 匹配查询不存在

时间:2014-11-30 20:56:42

标签: django

我正在研究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','客户',   '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.'state':store.state,File“/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 / Exception Value:State   匹配查询不存在。

1 个答案:

答案 0 :(得分:5)

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

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

Django引发错误,因为state ForeignKey上的Storestore.state,当您使用state访问它时,它必须查找它。如果ForeignKey为空且您未将[{1}}设置为允许Nonenull=True,则Django将引发DoesNotExist例外。