एक कस्टम माइग्रेशन काम करना चाहिए।
- आपके पास पहले से ही मॉडल A और B हैं, इसलिए मॉडल C को उन फ़ील्ड के साथ बनाएं जिन्हें आप दो मॉडलों से चाहते हैं।
- सामान्य स्कीमा माइग्रेशन बनाएं उदा. manage.py मेकमाइग्रेशन ... और किसी भी मौजूदा परिवर्तन के लिए आवेदन करें
- कस्टम माइग्रेशन बनाएं उदा. python manage.py makemigrations --empty yourappname (@2ps द्वारा साझा किया गया लिंक देखें
- ऊपर जेनरेट की गई फ़ाइल को संपादित करें, मैंने नीचे एक नमूना डेटा माइग्रेशन जोड़ा है।
- rum manage.py ऊपर चरण 4 से माइग्रेशन लागू करने के लिए माइग्रेट करें।
-
मॉडल ए और बी ड्रॉप करें यदि आपकी इच्छा है, तो माइग्रेशन उत्पन्न करें और आवेदन करें और आपको अच्छा होना चाहिए।
...
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), ]