Ich arbeite in Django 1.8. Ich möchte das LayerMapping import utility verwenden, um ein vorhandenes Modell zu aktualisieren.Django: Verwenden Sie LayerMapping, um ein vorhandenes Modell zu aktualisieren?
Dies ist meine Modelle Datei:
class PCT(models.Model):
code = models.CharField(max_length=3, primary_key=True,
help_text='Primary care trust code')
ons_code = models.CharField(max_length=9, null=True, blank=True)
name = models.CharField(max_length=200, null=True, blank=True)
boundary = models.GeometryField(null=True, blank=True)
objects = models.GeoManager()
Ich habe bereits eine Reihe im Modell haben mit code: 03V
und name: Corby
und keine Grenze.
Jetzt möchte ich einige Grenzen für diese Zeile aus einer KML-Datei importieren. Das ist mein Importbefehl:
class Command(BaseCommand):
args = ''
help = 'Imports boundaries from KML.'
def handle(self, *args, **options):
filename = 'CCC_Feb2013.KML'
ds = DataSource(filename)
layer_mapping = {
'code': 'Name',
'boundary': 'Unknown'
}
lm = LayerMapping(PCT, filename, layer_mapping, transform=False)
lm.save(strict=True, progress=1, verbose=True)
Das Problem, das ich habe, ist, dass dies die vorhandene Zeile zu wischen scheint, und ein neues ohne name
Feld erstellen. Gibt es eine Möglichkeit, die Zeile mithilfe von LayerMapping zu aktualisieren, anstatt sie zu überschreiben?
Hier ist eine Probe des KML, falls dies für die Prüfung hilft:
<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Folder>
<description><![CDATA[CCG boundary BSC]]></description>
<Placemark>
<name><![CDATA[03V]]></name>
<description><![CDATA[<br><br><br>
<table border="1" padding="0">
<tr><td>CCGcode</td><td>03V</td></tr>
<tr><td>CCGname</td><td>NHS Corby CCG</td></tr>
]]></description>
<visibility>1</visibility>
<open>0</open>
<Style><LineStyle><color>FF000000</color><width> 1</width></LineStyle>
<PolyStyle><fill>0</fill><outline>1</outline></PolyStyle></Style>
<Polygon>
<extrude>1</extrude>
<altitudeMode>clampToGround</altitudeMode>
<tessellate>1</tessellate>
<outerBoundaryIs><LinearRing>
<coordinates>
-.596387,52.496896,0
-.609296,52.508583,0...
</coordinates>
</LinearRing></outerBoundaryIs>
</Polygon>
</Placemark>
...
</Folder></kml>
Wenn ich nicht LayerMapping verwenden, können Sie bitte erklären könnte, wie die Grenze aus der KML-Datei zu importieren, ohne LayerMapping mit ?
Ist die vorhandene Zeile neu erhalten, ohne 'ons_code' sowie' name'? – OYRM