DoesNotExist:客户匹配查询不存在(Django)

时间:2014-07-30 18:27:20

标签: python django django-orm

在我的Django应用程序中,我收到了“DoesNotExist:客户匹配查询不存在”,其中堆栈跟踪指出在尝试查询来自组的客户(客户可以拥有多个组)的信息时,链接的资源“不存在“但客户确实存在于数据库中(并且要求提供信息):

 class Group(models.Model):
      id = models.AutoField(primary_key=True)
      customer = models.ForeignKey(Customer, to_field="customer_id", related_name='groups', null=True, blank=True) ## a blank customer_id indicates the group is 'private'
      ...

     @property
     def groups_linked(self):

        if self.is_private:
             linked = False
        else:
             linked = Customer.objects.value_list('cross-group-collaboration', flat=True).get(pk=self.customer_id) ## here the error bubbles up saying the Customer does not exist!

        if linked:
              return {'customer_id' : self.customer_id }
         else:
              return group = { 'group_id' : self.if}

Django docs开始,对此错误的描述如下:“请注意,使用get()和使用带有[0]切片的filter()之间存在差异。如果没有结果与查询匹配的get()将引发一个DoesNotExist异常。此异常是正在执行查询的模型类的属性 - 所以在上面的代码中,如果没有主键为1的Entry对象, Django将提出Entry.DoesNotExist。“

如果信息确实存在但是上面的错误正在被触发,那么可能是什么原因造成的呢?

1 个答案:

答案 0 :(得分:0)

我不确定你在这里尝试实现的目标,但无论如何都没有必要去寻找Customer对象,因为你已经将它作为self.customer

如下:

@property
def groups_linked(self):
    if self.customer is not None:
        return {'customer_id': self.customer.id}
    else:
        return {'group_id': self.id}