Django - Как включить карту в модальную форму и сохранить координаты в базе данных, когда пользователь выбирает точку на карте? - PullRequest
0 голосов
/ 15 октября 2018

Я работаю над проектом и изучаю веб-разработку.

Я подаю заявку в Джанго.Когда пользователь создает новую поездку с помощью формы, которую я создал, я хочу добавить карту в эту форму, чтобы пользователям нужно было только щелкнуть точку на карте, чтобы получить координаты для сохранения в базе данных для этой поездки.

Я хочу сохранить координаты для каждой новой поездки, чтобы я мог отобразить карту на странице профиля каждого пользователя, на которой показаны маркеры каждой поездки, которую он совершил, которая находится в базе данных.

Пожалуйста, помогите!

Спасибо

Вот код:

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')

1 Ответ

0 голосов
/ 15 октября 2018

Похоже на то, что у вас есть пара отношений «многие-к-одному», которые вы хотите сохранить в своей базе данных.Мой ответ основан на этой документации:

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 ... 
...