我正在研究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 匹配查询不存在。
答案 0 :(得分:5)
您的数据库中的商店模型似乎没有state
。当您尝试在此处访问state
时:
data.append({
'id': store.id,
'name': store.name,
'address': store.address,
'state': store.state,
})
Django引发错误,因为state
ForeignKey
上的Store
是store.state
,当您使用state
访问它时,它必须查找它。如果ForeignKey
为空且您未将[{1}}设置为允许None
值null=True
,则Django将引发DoesNotExist
例外。