2010-04-27 40 views
0

時,我有兩種型號:Django的顯示太多警告刪除對象

class Account(models.Model): 
    main_request = models.ForeignKey('JournalistRequest', related_name='main_request') 
    key = models.CharField(_('Key'), max_length=100) 

class JournalistRequest(models.Model): 
    account = models.ForeignKey(Account, blank=True, null=True) 

當我嘗試刪除JournalistRequest,它顯示了很多嵌套的警告,就像

Are you sure you want to delete the selected Заявка СМИ objects? All of the following objects and their related items will be deleted: 

    Journalist Request: some request 
     Account: some account 
      Journalist Request: some request 
       Account: some account 
        Journalist Request: some request 
         Account: some account 
          Journalist Request: some request 
           Account: some account 
            Journalist Request: some request 

所有帳戶是一樣的(ID是相同的),並且所有請求都是相同的,所以我認爲這是因爲遞歸。但我不知道如何在Django 1.1.1中解決這個問題!你可以幫我嗎?

+0

您有一個從Account到JournalistRequest的外鍵,反之亦然。我敢打賭,問題隱藏在那裏......是不是一個方向上的外鍵足夠了? – 2010-04-27 15:16:23

+0

@FelixKling,我認爲我的目標很明確:在一個帳戶中有很多請求,其中一個請求必須是主要請求。我應該使用什麼模式? – 2010-04-28 14:56:17

回答

1

那麼你有帳戶外鍵錄入記者請求,並且你也有JournalistRequest外鍵輸入帳戶。這兩個模型類可能沒有外鍵。刪除其中一個外鍵可以清除循環依賴。

如果不是這種情況,您可以在一個或兩個類上使用override the delete method,具體取決於您要查找的行爲類型。

0

我以爲我的目標很明確:有 在一個賬戶多次請求,以及一個 的請求必須是主要的一個。 我應該使用什麼模式?

class Account(models.Model): 
    #whatever 

class JournalistRequest(models.Model): 
    account = models.ForeignKey(Account) 
    is_main = models.BooleanField(default=False) 
+0

爲什麼它更好(除了遞歸)?我所看到的所有內容都比較複雜(如果有幾個請求使用相同的帳戶,並且is_main = true,則可能會比較危險)查詢主要請求。 – 2010-05-01 22:45:01