2016-08-15 3 views
0

Ich habe eine vorhandene Länderklasse in einer Datenbank in der Produktion, möchte aber das Django_Countries-Modell verwenden, um alle Länder, die ich verwende, zu aktualisieren.So integrieren Sie Django-Länder in ein vorhandenes Modell

Hier ist das bestehende Modell. Es erlaubt dem Anwender ein Land zu schaffen und eine Flagge ihres Landes

class Country(models.Model): 
    name = models.CharField(_("Name")) 
    icon = models.ImageField(_("Icon"),upload_to=os.path.join('images', 'flags')) 

ich die Möglichkeit eines Benutzers entfernen möchten laden Sie ein Land zu schaffen und haben nur ein Land auswählen.

Ich kann das vorhandene Modell wirklich nicht ändern, da es viele Abhängigkeiten gibt. Ich möchte nur den Namen und die Flagge zum bestehenden Modell hinzufügen.

+0

Möchten Sie dies als eine einmalige Migration tun. –

+0

Ich habe das Gefühl, dass Sie nach einer schnellen 1-Zeilen-Antwort suchen ... die es nicht gibt, müssen Sie Ihre Referenzen ändern, um ein neues Ländermodell zu verwenden, wenn Sie das suchen. – Sayse

Antwort

0

Schließlich landete nur ein Dump der Länder in eine JSON-Datei und eine Migration schreiben, um die Datenbank zu aktualisieren.

def forwards(apps, schema_editor): 
    Country = apps.get_model('country', 'Country') 
    Region = apps.get_model('country', 'Region') 

    Region.objects.filter(id=45).delete() 

    with codecs.open(os.path.join(os.path.dirname(__file__), 'countries.json'), encoding='utf-8') as cfile: 
    data = json.load(cfile) 

    for country, regions in data.items(): 
     country, created = Country.objects.get_or_create(name=country) 


class Migration(migrations.Migration): 
    dependencies = [ 
    ('country', 'previous_migration'), 
] 

operations = [ 
    migrations.RunPython(forwards), 
] 
Verwandte Themen