2015-02-10 55 views
0

有條件的經營者給予匹配查詢不存在異常

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

不知怎的,這給了我Exception: Client matching query does not exist.例外。這只是一個條件運算符,所以我不知道爲什麼我會得到這個異常。有沒有人有任何線索可能會出錯?

用戶配置型號

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 2015-02-10 07:02:27

+0

@Eithos配置文件是一個userprofile模型,客戶端是一個外鍵,客戶端有用戶作爲外鍵,用戶有ID – Jonathan 2015-02-10 07:05:42

+1

我只是沒有看到我們如何可以幫助你與我們提供的一點點代碼。關於條件操作符的工作方式沒有什麼神祕的;這不是什麼導致你的錯誤。該錯誤位於'profile.client.user.id'的代碼中。我們甚至不知道它是什麼類型的對象,如果'id'屬性是一個描述符(所以錯誤可能來自'__get__',如果是這樣的話)或者從__eq__',如果它已被定義。如果沒有這些信息,我們就無法解決這個問題。 – Eithos 2015-02-10 07:13:51

回答

0

這意味着,你的數據庫被打破 - profile.client字段指向了一個不存在的Client。你可以用下面的查詢來檢查它:

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

如果這樣的客戶端存在,那麼這個查詢將被正常執行。如果客戶端不存在,則會引發異常。