Opened 3 years ago
Closed 3 years ago
#33742 closed New feature (fixed)
GeoJSON serializer doesn't provide a mechanism to include the ID of a feature
| Reported by: | Samir Shah | Owned by: | Samir Shah |
|---|---|---|---|
| Component: | GIS | Version: | dev |
| Severity: | Normal | Keywords: | |
| Cc: | Claude Paroz | Triage Stage: | Ready for checkin |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
The GeoJSON specification says:
If a Feature has a commonly used identifier, that identifier SHOULD be included as a member of the Feature object with the name "id", and the value of this member is either a JSON string or number.
Thus it should be possible to generate a GeoJSON object which looks like this:
{
"type": "Feature",
"id": 24
"properties": {},
"geometry": {
"type": "Point",
"coordinates": [8.11, 52.11]
}
}
django.contrib.gis.serializers.geojson.Serializer doesn't support this - it's not possible to add an id key to a feature without overriding the get_dump_object() method of the class. If you specify pk in the fields, then this gets added to the properties of the feature, but not a top level id field. Having an ID is important for a number of use cases - particularly when GeoJSON data is made editable via an API, for which many client libraries use the id to uniquely identify features.
Given that the specification says an id SHOULD be present if available, I would like to propose one of the following:
- Django defaults to using the object PK as the
idfor the feature.
- Or, if (1) is considered a backwards-incompatible change, then a mechanism is provided to instruct the class to include an ID (which I guess may not always be the the primary key)
I'm happy to contribute a PR for this if you can give me guidance on what the preferred approach would be. Personally I think Django should include the ID by default.
Change History (5)
comment:1 by , 3 years ago
| Cc: | added |
|---|---|
| Type: | Bug → New feature |
comment:2 by , 3 years ago
| Triage Stage: | Unreviewed → Accepted |
|---|
comment:4 by , 3 years ago
| Triage Stage: | Accepted → Ready for checkin |
|---|
Sure, a patch would be welcome!