Как отобразить название вилайи и название муниципалитета на карте вместо отображения их идентификатора?
Как отобразить название вилайи и название муниципалитета на карте вместо отображения их идентификатора?
Нижеприведенный код отображает идентификатор вилайи и идентификатор коммуны вместо отображения названия вилайи и названия коммуны.
Как решить эту проблему
#models.py wilaya
class Wilaya(models.Model):
id = models.BigIntegerField()
name = models.CharField(max_length=75)``
geom = models.MultiPolygonField(srid=4326)
matricule=models.BigIntegerField(primary_key=True,null=False)
def __str__(self):
return self.name
#models.py commune
class Commune(models.Model):
id = models.BigIntegerField()
name = models.CharField(max_length=75)
geom = models.MultiPolygonField(srid=4326)
wilaya=models.ForeignKey(Wilaya,on_delete=models.DO_NOTHING,null=True)
def __str__(self):
return self.name
#models.py even
class Even(models.Model):
name = models.CharField(max_length=20, default='Even')
date = models.DateField(null=True, blank=True)
wilaya=models.ForeignKey(Wilaya,on_delete=models.DO_NOTHING,null=True,blank=True
commune=models.ForeignKey(Wilaya,on_delete=models.DO_NOTHING,null=True,blank=True
geom = models.PointField(srid=4326, null=True, blank=True,)
def __str__(self):
return self.name
#map.html
var even = new L.GeoJSON.AJAX("{% url 'even' %}", {
pointToLayer: function (feature, latlng) {
return L.marker(latlng, {
icon: L.icon({
iconUrl: "/static/img/icons/red.png",
iconSize: [28, 32],
iconAnchor: [12, 28],
popupAnchor: [0, -25]
}),
title: feature.properties.name,
riseOnHover: true
});
},
onEachFeature: function (feature, layer) {
var content = "<table class='table table-striped table-bordered table-
condensed'>" + "<tr><th>Name</th><td>" + feature.properties.name + "</td>
</tr>" + "<tr><th>Date</th><td>" + feature.properties.date + "</td></tr>
</th></table>" + "<details><summary>" + "See more details"+"</summary>
<table class='table table-striped table-bordered table-condensed'>" + "
</td></tr>" + "<tr><th>Commune</th><td>" + feature.properties.commune + "
</td></tr>" + "<tr><th>Wilaya</th><td>" + feature.properties.wilaya + "
</td></tr>" + "</table></details>";
layer.on({
click: function (e) {
layer.bindPopup(content).openPopup(e.latlng);
}
});
}
}).addTo(map);
Вы можете добавить метод @property следующим образом:
@property
def wilaya_label(self):
return self.wilaya.name
Теперь вы можете получить доступ следующим образом:
feature.properties.wilaya_label
или
{{ object.wilaya_label }}