Как я могу создать подкласс, используя django?

Здравствуйте, я использую 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|

Не могли бы вы мне помочь, пожалуйста ?

Большое спасибо !

Всего 1 ответ


создать новую модель:

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)

для заполнения таблицы ExtractData существующими данными в таблице MainModel используйте этот код только один раз:

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

после первоначального заполнения таблицы DataExtract, теперь вы должны использовать сигнал для вставки в таблицу DataExtract после каждой вставки в таблицу MainModel, например:

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)

Есть идеи?

10000