2012-10-29 65 views
4

我有一些我想包含在Django項目中的基礎初始數據。它完全適合作爲夾具,除了,我可能想拒絕重複。這意味着我可以將數據重新加載到現有安裝中,只會添加不存在的對象。我可以讓Django忽略非PK唯一約束上的重複裝置嗎?

我已經使用在同一領域自然鍵和外鍵,所以沒有ID的衝突等

可能的問題嗎?我不想在已經存在的情況下編寫JSON導入程序,並且我的數據已經在夾具中。

回答

4

通常夾具包含模型的所有信息,其中包括主鍵。下面是來自Django的網站器具的example

[ 
    { 
    "model": "myapp.person", 
    "pk": 1, 
    "fields": { 
     "first_name": "John", 
     "last_name": "Lennon" 
    } 
    }, 
    { 
    "model": "myapp.person", 
    "pk": 2, 
    "fields": { 
     "first_name": "Paul", 
     "last_name": "McCartney" 
    } 
    } 
] 

正如你可以看到它有一個主鍵。所以,即使你有重複的燈具,只要主鍵是相同的,不管最新的導入燈具是什麼,它都會覆蓋數據庫中的條目,所以你不應該在數據庫中有任何重複的數據。

+1

謝謝。我希望有一種方法可以在non-pk獨特的約束上做到這一點。 – Joe

+6

這並沒有真正回答這個問題。我很驚訝這是被接受的答案。 –

相關問題