簡體   English   中英

用逗號將模型的 CharField 拆分為兩個變量

[英]Split a Model's CharField by comma to two variables

我有以下型號:

    name = models.CharField(name="location's name",
                            unique=True, max_length=150, blank=False,
                            )
    latitude = models.FloatField(name='Latitude',
                                 unique=True, max_length=255, blank=False,
                                 default=1)
    longitude = models.FloatField(name='Longitude',
                                  unique=True, max_length=255, blank=False,
                                  default=1)

這是序列化程序:

from .models import LocationInfo
from rest_framework import serializers


class LocationInfoSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = LocationInfo
        fields = ("location's name", 'Latitude', 'Longitude', 'area', 'date_added')

我希望緯度和經度保持分開的變量,但是當用戶輸入它們時,我希望它們被加入。

意思是,我猜是這樣的:


    name = models.CharField(name="location's name",
                            unique=True, max_length=150, blank=False,
                            )
    lat_lon = models.CharField(name='Latitude/Longitude',
                                 unique=True, max_length=255, blank=False,
                                 default=1)
    lat, lon = lat_lon.split(',')
# serializers.py

from .models import LocationInfo
from rest_framework import serializers


class LocationInfoSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = LocationInfo
        fields = ("location's name", 'lat', 'lon', 'area', 'date_added')


您可以通過在添加到數據庫之前進行拆分來實現這一點(拆分用戶輸入並具有兩個字段,一個用於緯度,一個用於經度),但是鑒於您當前的實現,您可以在模型上使用@property裝飾器:

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]

然后,當您擁有YourModel的實例時,您可以訪問latlon字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM