2015-02-10 2 views
0

Я использую условный оператор, как это в моем коде:Условный оператор дает соответствующий запрос не существует исключение

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

+0

Что такое код для 'profile.client.user.id'? Это дескриптор данных? – Eithos

+0

Профиль @Eithos - это модель пользовательского профайла, а клиент - внешний ключ, у клиента есть пользователь как внешний ключ, а у пользователя есть id – Jonathan

+1

. Я просто не понимаю, как мы можем помочь вам с небольшим количеством кода, который вы нам дали. Нет ничего загадочного в том, как работает условный оператор; это просто не то, что вызывает вашу ошибку. Ошибка находится где-то в коде 'profile.client.user.id'. Мы даже не знаем, что это за объект, если атрибут 'id' является дескриптором (поэтому ошибка может возникать из' __get__', если это то, что есть) или из '__eq__', если оно определено , У нас просто нет возможности понять это, не имея доступа к этой информации. – Eithos

ответ

0

Это означает, что база данных разбивается - profile.client поля указывает на Client, что не существует. Вы можете проверить его со следующим запросом:

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

Если такой клиент существует, этот запрос будет выполнен нормально. Если клиент не существует, исключение будет поднято.