Django-匹配查询不存在

Hoo*_*ook 3 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')
Run Code Online (Sandbox Code Playgroud)

楷模:

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
Run Code Online (Sandbox Code Playgroud)

追溯:

环境:

请求方法:GET请求网址:http://127.oo1: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')

追溯:get_response 111中的文件“ /home/tabzz/c-dev/local/lib/python2.7/site-packages/django/core/handlers/base.py”。response = wrapd_callback(request,* callback_args,** callback_kwargs)在测试34中的文件“ /home/tabzz/c/posts/views.py”。“状态”:store.state,文件“ /home/tabzz/c-dev/local/lib/python2.7/site-包/ Django的/ DB /模型/场/ 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)

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

roj*_*oca 5

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

data.append({
    'id': store.id,
    'name': store.name,
    'address': store.address,
    'state': store.state,
})
Run Code Online (Sandbox Code Playgroud)

Django会引发错误,因为state它是ForeignKeyon Store,当您使用进行访问时,它必须查找它store.state。如果state是空的,你没有设置你的ForeignKey允许None使用值null=True,Django会提出一个DoesNotExist例外。