2012-07-18 27 views
3

我有一個Django模型與自定義指定的主鍵:如何安全地更改Django模型中的主鍵字段的值?

class ModelA(models.Model): 
    my_primary_key = models.CharField(primary_key=True, ...) 
    ... 

我也有有這個模型ForeignKey的引用其他型號:

class ModelB(models.Model): 
    ref_to_A = models.ForeignKey('ModelA', ...) 
    ... 

class ModelC(models.Model): 
    ref_to_A = models.ForeignKey('ModelA', ...) 
    ... 

... 

我MODELA的一些情況,並且需要爲這些實例更改my_primary_key的值。

要做到這一點,最好的方法是什麼?

+0

假設您現在想通過更改主鍵來引用新記錄(也可能是其他屬性)。所以,而不是改變主鍵,爲什麼不改變其他屬性?或者您複製記錄並更新新記錄的外鍵實例。 – Rohan 2012-07-18 13:15:04

+0

這就是我們使用代理鍵而不是自然鍵的原因。 – 2012-07-18 16:57:35

回答

3

不知道你是否仍在尋找這個,但也許這個片段將有助於:http://djangosnippets.org/snippets/2915/

雖然這不是一個很好的數據庫設計,但正是由於這類問題。通常使用django的隱式主鍵並創建my_primary_key作爲唯一字段更好。

相關問題