在我的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。“
如果信息确实存在但是上面的错误正在被触发,那么可能是什么原因造成的呢?
答案 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}