2017-09-04 54 views
0

我在Python上編寫網站,使用MongoDB和djongo(將Mongo與Django連接)的Django,我希望能夠使用我的網站添加和刪除數據庫中的文檔。但是我在做這件事時遇到了錯誤。Django主鍵錯誤(djongo驅動程序)

如果我沒有在我的模型中設置主鍵,那麼我可以成功添加文檔,但是當試圖刪除時有AssertionError(因爲它的id屬性設置爲None,所以不能刪除對象),但是當我檢查數據庫_ID字段是自動創建的。 如果我在models.py中設置了primary_key = True的主鍵,我可以成功刪除一個文檔,但插入時我得到了AssertionError(沒有提供異常消息)。另外,如果主鍵未設置,則我無法從管理面板訪問文檔,但可以將它們添加到數據庫(通過管理面板);如果pk已設置,則從管理面板可以訪問,刪除和編輯,但不能將新文檔添加到數據庫。

這是我的模型:

class DevList(models.Model): 
    dev_num = models.CharField(max_length = 200 , primary_key = True) 
    dev_name = models.CharField(max_length = 200) 
    dev_descr = models.CharField(max_length = 200) 
    dev_type = models.CharField(max_length = 200) 

***如果沒有PK的設置,然後我刪除primary_key = True

我的看法是簡單的形式後,我用d.save()保存和d.delete()刪除。

我已經在各處搜索此問題,但無法找到有用的東西。

PS請幫我創建一個標籤「djongo」對於這個問題

+0

想知道你是否曾經找到答案。我正在同樣的事情上掙扎。 – Ryan

回答

0

事實上,Django的默認提供了一個id場與每一個模型,它是默認設置爲primary key

現在,您可以通過primary_key=True將其他字段設置爲主鍵。但爲了更順利的操作,我會建議您在其他領域使用unique=True

dev_num = models.CharField(max_length = 200 , unique = True) 

希望它有幫助!

+0

在我的情況下,似乎沒有Django id字段(否則我不會收到錯誤)。也許它被MongoDB _id字段覆蓋,但它會導致Django不能看到id(或將id設置爲None,我不確定)。因此,如果我不明確設置Primary_key,Django管理面板根本看不到任何標識。添加獨特也沒有幫助,仍然有相同的錯誤。 – Shepherd

+0

它不應該發生,但讓我看看是否是這種情況。 –