Вы хотите запретить пользователю изменять начальную точку и хотите добавить второе поле для ввода потенциальной точки.
Вы можете добиться этого, добавив дополнительный form.PointField
непосредственно в определение формы:
from django.contrib.gis import forms
class PlaceForm(forms.ModelForm):
new_location = forms.PointField()
class Meta:
model = Place
fields = [
'name','description','location','city','tags', 'new_location'
]
read_only_fields = ['location']
, а затем в вашем представлении:
class PalceCreateView(CreateView):
queryset = Place.objects.all()
def form_valid(self,form):
new_location = self.request.POST['new_location']
form.instance.location = new_location
form.save()
return super(PalceCreateView,self).form_valid(form)
Или вы можете изменить существующее решение (lat, long
как пару form.FloatField
] 2 s) следующим образом:
class PlaceForm(forms.ModelForm):
lat = forms.FloatField()
long = forms.FloatField()
class Meta:
model = Place
fields = [
'name','description','location','city','tags', 'lat', 'long'
]
read_only_fields = ['location']
, и ваше представление останется то же