gpt4 book ai didi

mysql - 如何将两个django模型(表)合并为一个模型(表)

转载 作者:搜寻专家 更新时间:2023-10-30 23:38:41 28 4
gpt4 key购买 nike

我想合并两个 Django 模型并创建一个模型。让我们假设我有第一个表表 A,其中包含一些列和数据。

Table A
--------------
col1 col2 col3 col4
x1 x2 x3 x4
y1 y2 y3 y4

我还有另一个表 Table B,其中包含一些列和数据

Table B
--------------
col1 col2 col5 col6
x1 x2 p3 p4
y1 y2 p5 p6

在两个模型(表)中,我有几列(这里是两列)相似,几列不同。所以我想合并两个模型(表)并生成如下所示的内容:

Table C
-------------------------------------
col1 col2 col3 col4 col5 col6
x1 x2 x3 x4 p3 p4
y1 y2 y3 y4 p5 p6

我知道我什么时候会合并模型并运行 make migration,django 肯定会创建一个迁移,并且在迁移之后我将能够创建上述结构,但我不想丢失我的数据,因为它将继续在 prod db 上.可以通过对数据库的 sql 查询轻松完成,但是如何使用 django 呢????预先感谢您的任何回复。

最佳答案

自定义迁移应该有效。

  1. 您已经有了模型 A 和 B,因此使用您希望从这两个模型中获得的字段创建模型 C。
  2. 进行正常的架构迁移,例如manage.py makemigrations ... 并申请任何现有更改
  3. 创建自定义迁移,例如python manage.py makemigrations --empty yourappname(查看@2ps 共享的链接
  4. 编辑上面生成的文件,我在下面添加了一个示例数据迁移。
  5. rum manage.py migrate 应用上面第 4 步的迁移。
  6. 如果您愿意,可以删除模型 A 和 B,生成迁移并应用,您应该会很好。

    ...

    def merge_models_ab(apps, schema_editor):
    A = apps.get_model("app_name", "A")
    B = apps.get_model("app_name", "B")
    C = apps.get_model("app_name", "C")
    #come up with some interesting ways to join A and B
    #iterate over join and insert into C
    #C.objects.create(...)

    ...

    class Migrations(migrations.Migration):
    dependencies = [
    ('app_name', 'some_prev_migrations'),
    ]
    operations = [
    migrations.RunPython(merge_models_ab),
    ]

关于mysql - 如何将两个django模型(表)合并为一个模型(表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38006144/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com