我需要填充一個(gè)數(shù)據(jù)庫(kù)表,根據(jù)這篇文章,正確的方法是使用數(shù)據(jù)遷移。我有一個(gè) aux 函數(shù),我們稱之為get_my_values,它返回具有以下形狀的字典字典:{ origin1: { key2: value2, key3: value3, ..., keyN: valueN }, origin2: { key1: value1, key3: value3, ..., keyN: valueN }, ... originN: { key1: value1, key2: value2, ..., keyN-1: valueN-1 },}例如:{ 'ABC': { 'DEF': 1, 'GHI': 2 }, 'DEF': { 'ABC': 1, 'GHI': 3 }, 'GHI': { 'ABC': 2, 'DEF': 3 },}我要填充的表格具有以下形狀:ORIGIN | 'ABC' | 'DEF' | 'GHI' | char | float | float | float |因此,在這篇文章之后,我創(chuàng)建了以下遷移:from django.db import migrationsfrom myapp.utils import get_my_valuesdef populate_my_table(apps, schema_editor): Data = apps.get_model('myapp', 'Table') my_data_dict = get_my_values() for origin in my_data_dict.keys(): # insert into Data.origin the current origin # if the Data.origin == Data.column, insert in this column the value 0 # else, insert in each Data.column, the corresponding value from my_data_dict[origin]['column']class Migration(migrations.Migration): dependencies = [ ('myapp', 'the_table_migration'), ] operations = [ migrations.RunPython(populate_my_table), ]如您所見,我編寫了一個(gè)偽代碼來填充它。但我正在努力真正變成真正的代碼。最后,我期望這樣的記錄:ORIGIN | ABC | DEF | GHI | ABC | 0.0 | 1.0 | 2.0 | DEF | 1.0 | 0.0 | 3.0 | GHI | 2.0 | 3.0 | 0.0 |
Django 如何使用數(shù)據(jù)遷移填充表?
動(dòng)漫人物
2022-07-26 09:42:47