在地图上显示与Django

我有一个Django应用,每个用户都可以添加具有多个可能指标(宽度,高度和长度组合)的产品。用户还必须指定此产品位于哪个城市。 用户还可以在数据库中搜索与特定指标匹配的所有产品。 我使用Django 1.11,正在寻找一种解决方案,以便在交互式地图上显示与查询集匹配的所有产品。

我正在尝试使用django-leafletdjango-geojson(因为我的数据库不是基于gis的,并且我不需要繁琐的地理计算),但是我面临一些困难,因为我的“ PointField”不在我的产品模型中,而是在位置模型中和地图上,我需要显示“产品”属性,因此必须将所有这些数据一起序列化。

如果您更喜欢代码而不是文字,这是我相关文件的简化版本。

#models.py

class Product(models.Model):
    name = models.CharField()
    owner = models.ForeignKey(User)
    photo = models.ImageField(...)
    dimensions = models.ManyToManyField(Metrics)
    location = models.ForeignKey(Location,related_name='products',related_query_name='product')

class Metrics(models.Model):
   width = models.PositiveIntegerField()
   height = models.PositiveIntegerField()
   length = models.PositiveIntegerField()

class Location(models.Model):
   zip_code = models.PositiveIntegerField()
   city_name = models.CharField()
   slug = models.SlugField(max_length=500,blank=True)
   geom = PointField(default={'type': 'Point','coordinates': [0,0]})


#views.py

class SearchResultListView(ListView):
     model = models.Product
     template_name='my_app/searchresult_list.html'
     context_object_name = 'product_list'

     def get_context_data(self,**kwargs):
         context = super().get_context_data(**kwargs)
         query_width = self.request.GET['width']
         query_height = self.request.GET['height']
         query_length = self.request.GET['length']
         context['product_list'] = context['product_list'].filter(metrics__width=query_width,metrics__length=query_length,metrics__height=query_height)
         return context

#urls.py

????

#template.html

????

我在django-geojson文档中看到了多种方法来访问db(GeoJSON图层视图, 平铺的GeoJSON图层视图,GeoJSON模板过滤器,低级序列化)。但是我很难找到满足我的需求的方法,因为我的属性位于产品模型中,坐标位于位置模型中,而查询集位于不相关的基于类的视图中。

对执行任务的最佳方式有任何想法吗?我应该继续使用django-geojson还是我有更好的应用程序?

yuduotianguang 回答:在地图上显示与Django

您的产品和位置看起来不错,但不清楚您要使用“指标”做什么。要选择某个地方附近的产品,您需要以下内容:

!mkdir ~/.kaggle
!echo '{"username":"korakot","key":"xxxxxxxx"}' > ~/.kaggle/kaggle.json
!chmod 600 ~/.kaggle/kaggle.json
!kaggle datasets download -d zillow/zecon -f State_time_series.csv

https://docs.djangoproject.com/en/3.0/ref/contrib/gis/geoquerysets/#distance-lt

本文链接:https://www.f2er.com/2898161.html

大家都在问