Database 如何安全地更改Django模型中主键字段的值?

Database 如何安全地更改Django模型中主键字段的值?,database,django,django-models,django-orm,Database,Django,Django Models,Django Orm,我有一个带有自定义指定主键的Django模型: class ModelA(models.Model): my_primary_key = models.CharField(primary_key=True, ...) ... 我还拥有其他模型,这些模型在国外对该模型有重要参考: class ModelB(models.Model): ref_to_A = models.ForeignKey('ModelA', ...) ... class ModelC(mod

我有一个带有自定义指定主键的Django模型:

class ModelA(models.Model):
    my_primary_key = models.CharField(primary_key=True, ...)
    ...
我还拥有其他模型,这些模型在国外对该模型有重要参考:

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

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

...
我有一些ModelA实例,需要更改这些实例的\u primary\u键的值


做这件事最好的方法是什么?

不知道您是否还在寻找这个,但也许这个片段会有所帮助:


但这不是一个很好的数据库设计,因为正是这种问题。通常,最好使用django的隐式主键和,并将
my_primary_key
创建为唯一字段。

假设您现在希望通过更改主键(可能是其他属性)来引用新记录。所以,与其更改主键,不如更改其他属性?或者复制一条记录并更新新记录外键的实例。这就是为什么我们使用代理键而不是自然键。