Python 拆分模型';用逗号将CharField转换为两个变量

Python 拆分模型';用逗号将CharField转换为两个变量,python,django-rest-framework,model,serialization,Python,Django Rest Framework,Model,Serialization,我有以下型号: name=models.CharField(name=“location's name”, 唯一=真,最大长度=150,空白=假, ) latitude=models.FloatField(name='latitude', 唯一=真,最大长度=255,空白=假, 默认值=1) 经度=models.FloatField(name='longitude', 唯一=真,最大长度=255,空白=假, 默认值=1) 它是序列化程序: from.models导入位置信息 从rest_框架导

我有以下型号:

name=models.CharField(name=“location's name”,
唯一=真,最大长度=150,空白=假,
)
latitude=models.FloatField(name='latitude',
唯一=真,最大长度=255,空白=假,
默认值=1)
经度=models.FloatField(name='longitude',
唯一=真,最大长度=255,空白=假,
默认值=1)
它是序列化程序:

from.models导入位置信息
从rest_框架导入序列化程序
类LocationInfoSerializer(serializers.HyperlinkedModelSerializer):
类元:
型号=位置信息
字段=(“位置名称”、“纬度”、“经度”、“区域”、“添加日期”)
我希望纬度和经度保持分离的变量,但当用户输入它们时,我希望它们合并

意思是,我猜是这样的:


name=models.CharField(name=“location's name”,
唯一=真,最大长度=150,空白=假,
)
lat_lon=models.CharField(name='Latitude/Longitude',
唯一=真,最大长度=255,空白=假,
默认值=1)
横向,纵向=横向分离(',')
#serializers.py
从。模型导入位置信息
从rest_框架导入序列化程序
类LocationInfoSerializer(serializers.HyperlinkedModelSerializer):
类元:
型号=位置信息
字段=(“位置名称”、“lat”、“lon”、“区域”、“添加日期”)

您可以通过在添加到数据库之前拆分来实现这一点(拆分用户输入,并有两个字段,一个用于纬度,一个用于经度),但考虑到当前的实现,您可以在模型上使用装饰器:

class YourModel(yourmodelparents):

    <your_code>

    @property
    def lat(self):
        return self.lat_lon.split(',')[0]

    @property
    def lon(self):
        return self.lat_long.split(',')[1]
为您的模型分类(您的模型父母):
@财产
def lat(自):
返回self.lat_lon.split(',')[0]
@财产
def lon(自我):
返回self.lat_long.split(',')[1]

然后,当您有
YourModel
的实例时,您可以访问
lat
lon
字段。

我不明白它是如何与属性一起保存的?它没有保存。这是一种利用-的方法,基本上每当您访问该属性时,您都将拆分
lat_lon
字段并检索适当的值。如果您确实希望在模型中保存这些字段,则需要将它们声明为CharFields(或FloatFields),然后重写或。