【问题标题】:How to update primary key of an existing object in Django (with PostgreSQL)?如何更新 Django 中现有对象的主键(使用 PostgreSQL)?
【发布时间】:2020-08-27 00:27:41
【问题描述】:

我需要在我的 django 应用中更改一些对象的主键,我想知道我该如何实现?

我的模型也与其他模型有关系。

【问题讨论】:

    标签: django postgresql


    【解决方案1】:

    从技术上讲,应该可以对查询集进行更新查询:

    MyModel.objects.filter(id=old_id).update(id=new_id)
    

    如果数据库中的约束设置正确,关系也应该级联,但总的来说,我会避免更新 PK。

    【讨论】:

    • 嘿,伙计,当我使用你的方法时,出现以下错误:IntegrityError: update or delete on table "restaurants_restaurant" 违反了表 "restaurants_item" 上的外键约束 "restaurants_item_restaurant_id_32e74c18_fk_restauran" DETAIL: Key (id )=(101494) 仍然从表“restaurants_item”中引用。
    • @VahidAl 那是因为您的更新没有级联到外键。您需要根据您首先更新的键更新表或对键应用级联约束,以便在更新主键时它也会更新所有相关表。
    • 嗨,J Spratt,谢谢,我对 django 还很陌生,你能多解释一下还是用代码实现它?
    猜你喜欢
    • 1970-01-01
    • 2020-10-07
    • 2018-03-14
    • 2021-03-08
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多