转换浮到十进制(IP地址参数)
问题描述:
即时试图定位使用GeoIP的此一用户的位置我有转换浮到十进制(IP地址参数)
Class register(models.Model):
user = models.ForeignKey('auth.User', unique = True)
latitude = models.DecimalField(max_digits=12, decimal_places=10)
longitude = models.DecimalField(max_digits=12, decimal_places=10)
Availability = models.CharField(max_length=8,choices=STATUS_CHOICES, blank= False, null=False)
Status = models.CharField(max_length=50, blank = True, null= True)
和forms.py我有
class registerForm(forms.ModelForm):
class Meta:
model=register
fields = ('Availability', 'Status')#'latitude','longitude',
def save(self,ip_address, *args, **kwargs):
g = GeoIP()
lat,lon = g.lat_lon(ip_address)
user_location = super(registerForm, self).save(commit=False)
user_location.latitude = lat
user_location.longitude = lon
user_location.save(*args, **kwargs)
和在我的看法,我有
def status_set(request):
if request.method == "POST":
rform = registerForm(data = request.POST)
print "rejister form request"
if rform.is_valid():
register = rform.save(ip_address='119.153.117.32')
register.user=request.user
register.save(ip_address)
return render_to_response('home.html')
else:
rform = registerForm()
return render_to_response('status_set.html',{'rform':rform})
我EM将该IP地址为“119.153.117.32”,因为我是从本地环路和的GeOI访问该网站P本地循环(127.0.0.1)没有lat,lon。并且它没有返回本地循环。\ 当我提交它表示“无法将浮点数转换为十进制数,首先将浮点数转换为字符串”。我怎样才能解决这个问题是强制性的将其转换为字符串还是有没有更好的方式来做到这一点。
答
尝试使用models.FloatField替代DecimalField的坐标,或在保存对象之前使用str(lat)等将浮点数转换为字符串。我不确定DecimalField是否适合于作为浮点数返回的数据,所以我更愿意更改为FloatField,但这意味着要重新同步数据库。
DecimalField大概是打算的东西,这是一个Python的 '小数' - 在这里看到: