Django - 当用户在地图上选择点时,如何在模态形式中包含地图并将坐标保存到数据库?



我正在做一个项目,也是Web开发的学生。

我正在用Django做一个应用程序。当用户使用我创建的表单创建新行程时,我想向该表单添加地图,以便用户只需单击地图上的点即可获取坐标以保存到该行程的数据库中。

我想保存每次新行程的坐标,以便我可以在每个用户的个人资料页面上渲染一张地图,向他们显示数据库中他们所进行的每次旅行的标记。

请帮忙!

谢谢

下面是一些代码:

models.py

class Trip (models.Model):
user = models.ForeignKey(User, on_delete = models.CASCADE, related_name='trips') 
start_date = models.DateField()
end_date = models.DateField()
trail =  models.CharField(max_length=300)
permit = models.URLField(blank=True, null=True)
completed = models.BooleanField(default=False) 
location = models.CharField(blank=True, max_length=400)
lat = models.DecimalField(blank=True, null=True, max_digits=9, decimal_places=6)
lng = models.DecimalField(blank=True, null=True, max_digits=9, decimal_places=6)
created_at = models.DateField(auto_now_add =True)
def __str__ (self):
return self.trail
def total_days(self):
return (self.end_date - self.start_date).days

forms.py

class CreateTrip(forms.ModelForm):
start_date = forms.DateField(
widget=forms.TextInput(     
attrs={'type': 'date'} 
)
)     
end_date = forms.DateField(
widget=forms.TextInput(     
attrs={'type': 'date'} 
)
)

class Meta():
model = models.Trip
fields = ('trail','location', 'permit', 'completed', 'start_date', 'end_date')

听起来对我来说,你有几个想要存储在数据库中的多对一关系。我的答案基于此文档:

https://docs.djangoproject.com/en/2.1/topics/db/examples/many_to_one/

您有可以进行多次旅行的用户。

因此,您将有一个名为Trip的模型,如下所示:

class Trip(models.Model):
name = models.CharField(max_length=100)
create_date = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(User)
... whatever else ... 

您的行程有积分,因此您可能需要这样的模型:

class Point(models.Model):
lat = models.DecimalField(blank=True, null=True, max_digits=9, decimal_places=6)
lng = models.DecimalField(blank=True, null=True, max_digits=9, decimal_places=6)
order = models.IntegerField() # ordering for the points.
create_date = models.DateTimeField(auto_now_add=True)
trip = models.ForeignKey(Trip)
... whatever else ... 

最新更新