首页 文章

Django - 匹配查询不存在

提问于
浏览
3

我正在研究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请求URL: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')Traceback:File“/ home / tabzz / c-dev / local / lib / python2.7 / site-packages / django / core / handlers / base.py“in get_response 111. response = wrapped_callback(request,* callback_args,** callback_kwargs)File”/家/ tab38中的tabzz / c / posts / views.py“'state':store.state,File”/home/tabzz/c-dev/local/lib/python2.7/site-packages/django/db/models /fields/related.py“in get 572. rel_obj = qs.get()File”/home/tabzz/c-dev/local/lib/python2.7/site-packages/django/db/models/query.py “在get 357. self.model._meta.object_name”异常类型:/ posts / Test / Exception值中的DoesNotExist:状态匹配查询不存在 .

1 回答

  • 4

    看起来您的数据库中有一个没有 state 的商店模型 . 当您尝试访问 state 时:

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

    Django抛出一个错误,因为 stateStore 上是一个 ForeignKey ,当你用 store.state 访问它时它必须查找它 . 如果 state 为空且您尚未将 ForeignKey 设置为允许 NoneNone 值,则Django将引发 DoesNotExist 异常 .

相关问题