python - 尝试从函数返回语句创建属性
问题描述
我认为我缺乏对范围的理解。在我的“商店”模型中,我有一个功能可以将address
字段转换为纬度和经度。我想获取我返回的两个值并使用它们为我的“商店”模型创建latitude
和longitude
属性。我的目标是在我的模板中使用它们,{{store.latitude}}
例如{{store.longitude}}
class Store(models.Model):
name = models.CharField(max_length=100)
address = models.CharField(max_length=255)
def get_coords(self):
geolocator = Nominatim()
location = geolocator.geocode(self.address)
latitude = location.latitude
longitude = location.longitude
return latitude, longitude
latitude = ...
longitude = ...
class Meta:
verbose_name_plural = "Store"
def __str__(self):
return self.name
新模式
class Store(models.Model):
name = models.CharField(max_length=100)
address = models.CharField(max_length=255)
latitude = models.CharField(max_length=255)
longitude = models.CharField(max_length=255)
class Meta:
verbose_name_plural = "Store"
def __str__(self):
return self.name
def update_coordinates(self):
geolocator = Nominatim()
location = geolocator.geocode(self.address)
self.latitude = location.latitude
self.longitude = location.longitude
self.save(update_fields=["latitude", "longitude"])
解决方案
models.py
使用此代码块更改您的。然后您可以将商店实例传递给模板。您可以返回这些值并将它们静态传递给模板,但这在将来使用会更安全,因为这会在调用 save 方法时更新数据库。
class Store(models.Model):
name = models.CharField(max_length=100)
address = models.CharField(max_length=255)
latitude = models.CharField(max_length=255)
longitude = models.CharField(max_length=255)
class Meta:
verbose_name_plural = "Stores"
def __str__(self):
return self.name
def update_coordinates(self):
geolocator = Nominatim()
location = geolocator.geocode(self.address)
self.latitude = location.latitude
self.longitude = location.longitude
self.save(update_fields=["latitude", "longitude"])
推荐阅读
- c# - 通过 APIGEE 运行时 Swagger 不起作用
- php - PHP用另一个字符串中的单词替换字符串
- angular - 从子组件向表单添加输入
- javascript - Javascript函数立即停止
- android - 使用 Android Canvas.drawCircle() 时如何在画布上制作圆形动画
- angular - Angular4 在超时时重播我的请求
- python-3.x - Python中今天日期和负3个月之间的条件语句
- java - Spring webflux:如何配置 Controller 和 WebClient 像代理一样工作?
- php - 语言子文件夹上的 htaccess 404 错误(en/)
- php - Laravel Eloquent 模型使用多个表合并为一个(没有单独的模型)