如何使用Django创建子类?

2024-05-16 07:28:06 发布

您现在位置:Python中文网/ 问答频道 /正文

您好,我正在使用django和postgre数据库,在我的数据库中,我有5列,其中一列名为:“数据”,数据中有:

|data |
|{"name":"Peter","city":"New York"}|
|{"name":"Denis","city":"Paris"}|
|{"name":"Jennifer","city":"San Francisco"}|
|{"name":"Kim","city":"Berlin"}|

我想提取这个列并创建一个名为dataExtract的子表,例如:

|name|city|
|Peter|New York|
|Denis|Paris|
|Jennifer|San Francisco|
|Kim|Berlin|

你能帮帮我吗?你知道吗

非常感谢!你知道吗


Tags: 数据djangoname数据库citynewpetersan
1条回答
网友
1楼 · 发布于 2024-05-16 07:28:06

创建新模型:

class DataExtract(Base):
    main = models.OneToOneField(
        MainModel,
        on_delete=models.CASCADE,
        primary_key=True,
    )
    name = models.CharField(default=None, max_length=400, blank=True)
    city = models.CharField(default=None, max_length=400, blank=True)

要使用MainModel表中的现有数据填充ExtractData表,只需使用以下代码一次:

for main in MainModel.object.all():
    ExtractData.create(name=main.data__name,city=main.data__city)

在初始填充DataExtract表之后,现在必须在每次插入MainModel表之后使用signal插入DataExtract表,如下所示:

class DataExtract(Base):
    ......
    ......

    @receiver(post_save, sender=MainModel)
        def create_data_extract(sender, instance, created, **kwargs):
            # you have to check here for duplicate, 
            # if there is no duplicate, create it.
            # if there is duplicate update that
            ExtractData.create(name=instance.data__name,city=instance.data__city)

相关问题 更多 >