条件运算符给出匹配查询不存在异常

时间:2015-02-10 06:58:19

标签: python django django-celery

我在我的代码中使用了这样的条件语句:

if not profile.client.user.id == 3:

不知怎的,这给了我Exception: Client matching query does not exist.例外。这只是一个条件运算符,所以我不确定为什么我会得到这个异常。有没有人知道可能出现什么问题?

UserProfile模型

class UserProfile(models.Model):
    # This field is required.
    user = models.OneToOneField(User)
    client = models.ForeignKey(Client,null=True)

客户端模型

class Client(models.Model):
    user = models.ForeignKey(AUTH_USER_MODEL, related_name='oauth2_client',
        blank=True, null=True)

用户模型

这是标准django user model

2 个答案:

答案 0 :(得分:0)

尝试使用pk而不是id

if not profile.client.user.pk == 3:

更多他们的:What's the difference between Model.id and Model.pk in django?

答案 1 :(得分:0)

这意味着您的数据库已损坏 - profile.client字段指向不存在的Client。您可以使用以下查询进行检查:

client = Client.objects.get(pk=profile.client_id)

如果此类客户端存在,则此查询将正常执行。如果客户端不存在,那么将引发异常。