from django.contrib.gis import admin from location import models from django.contrib.gis.geos import Point from django.utils.translation import gettext_lazy as _ @admin.register(models.Country) class CountryAdmin(admin.ModelAdmin): """Country admin.""" @admin.register(models.Region) class RegionAdmin(admin.ModelAdmin): """Region admin.""" @admin.register(models.City) class CityAdmin(admin.ModelAdmin): """City admin.""" class WineAppellationInline(admin.TabularInline): model = models.WineAppellation extra = 0 @admin.register(models.WineRegion) class WineRegionAdmin(admin.ModelAdmin): """WineRegion admin.""" inlines = [WineAppellationInline, ] @admin.register(models.WineAppellation) class WineAppellationAdmin(admin.ModelAdmin): """WineAppellation admin.""" @admin.register(models.Address) class AddressAdmin(admin.OSMGeoAdmin): """Address admin.""" list_display = ('__str__', 'geo_lon', 'geo_lat') readonly_fields = ['geo_lon', 'geo_lat', ] fieldsets = ( (_('Main'), { 'fields': ['street_name_1', 'street_name_2', 'number'] }), (_('Location'), { 'fields': ['coordinates', 'geo_lon', 'geo_lat', ] }), (_('Address detail'), { 'fields': ['city', 'postal_code', ] }), ) def geo_lon(self, item): # Point(longitude, latitude) if isinstance(item.coordinates, Point): return item.coordinates.x def geo_lat(self, item): if isinstance(item.coordinates, Point): return item.coordinates.y