Как разделить поле модели на два дополнительных поля в django

У меня есть простая модель следующего вида:

class Place(models.Model):
    location = LocationField(
        map_attrs={"style": "mapbox://styles/mightysharky/cjwgnjzr004bu1dnpw8kzxa72", "center": (17.031645, 51.106715)})
    latitude = models.FloatField(blank=True, null=True)
    longitude = models.FloatField(blank=True, null=True)

поле location получает широту, долготу выбранной локции с помощью mapbox api. при отправке оно сохраняется следующим образом: location = (43.12,54,12). Я хочу разделить этот вывод и сохранить его в поле широты и долготы. как мне написать метод pre_save, чтобы сделать это?

********* ОБНОВЛЕНИЕ ********* Я написал этот сигнал pre_save, но он не работает:

@receiver(pre_save)
def pre_save_software_reciever(sender, instance, *args, **kwargs):
    instance.location = "{},{}".format(instance.latitude, instance.longitude)
pre_save.connect(pre_save_software_reciever, sender=Place)

1 IF Location is a SET ,

class Place(models.Model):
    location = LocationField(
        map_attrs={"style": "mapbox://styles/mightysharky/cjwgnjzr004bu1dnpw8kzxa72", "center": (17.031645, 51.106715)})
    latitude = models.FloatField(blank=True, null=True)
    longitude = models.FloatField(blank=True, null=True)


    def save(self, *args, **kwargs):    
        #Directly access tuple values
        self.latitude = self.location[0]
        self.longitude = self.location1[1]
        super(Model, self).save(*args, **kwargs)

2 Если Location является string ,

 class Place(models.Model):
    location = LocationField(
        map_attrs={"style": "mapbox://styles/mightysharky/cjwgnjzr004bu1dnpw8kzxa72", "center": (17.031645, 51.106715)})
    latitude = models.FloatField(blank=True, null=True)
    longitude = models.FloatField(blank=True, null=True)


    def save(self, *args, **kwargs):    
        #manipulate the string to extract lat and long...
        location_coordinates = self.location.split(',')
        self.latitude = float(location_coordinates[0][1:])
        self.longitude = float(location_coordinates[1][:-1])
        super(Model, self).save(*args, **kwargs)
Вернуться на верх