Tôi đang làm việc ở Django 1.8. Tôi muốn sử dụng LayerMapping import utility để cập nhật mô hình hiện tại.Django: Sử dụng LayerMapping để cập nhật mô hình hiện có?
Đây là mô hình tập tin của tôi:
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()
Tôi đã có một hàng trong mô hình với code: 03V
và name: Corby
, và không có ranh giới.
Bây giờ tôi muốn nhập một số ranh giới cho hàng này từ tệp KML. Đây là lệnh nhập của tôi:
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)
Vấn đề tôi đang gặp phải là điều này dường như xóa hàng hiện tại và tạo một hàng mới không có trường name
. Có cách nào để cập nhật hàng bằng cách sử dụng LayerMapping, thay vì ghi đè nó?
Dưới đây là một mẫu của các KML, trong trường hợp này giúp cho kiểm tra:
<?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>
Nếu tôi không thể sử dụng LayerMapping, xin vui lòng bạn có thể giải thích làm thế nào để nhập khẩu các ranh giới từ tệp KML, mà không sử dụng LayerMapping ?
Liệu hàng hiện có được tái tạo mà không cần 'ons_code' cũng là 'name'? – OYRM