无法在GeoDjango中创建PointField()

问题描述 投票:0回答:1

我无法从此示例模型创建数据库。

    from django.contrib.gis.db import models


class Subscriber(models.Model):
    id = models.IntegerField(primary_key=True)
    login  = models.CharField(max_length=200, unique=True)
    email  = models.CharField(max_length=200, unique=True)
    country  = models.CharField(max_length=200)

    def __str__(self):
        return self.email

class Localisation(models.Model):
    name = models.CharField(max_length=100)
    point = models.PointField()
    address = models.CharField(max_length=100)
    city = models.CharField(max_length=50)


class Video(models.Model):
    id = models.IntegerField(primary_key=True)
    video_title = models.CharField(max_length=200)
    video_url = models.CharField(max_length=255, unique=True)
    video_file = models.CharField(max_length=50)
    video_date = models.DateTimeField('date published')
    video_user = models.ForeignKey(Subscriber, on_delete=models.CASCADE)
    loc = models.ForeignKey(Localisation, on_delete=models.CASCADE)

    def __str__(self):
        return self.video_title + " / " + self.video_file

无论如何我都会收到此错误(徒然尝试了Stackoverflow和Google):

File "/usr/lib/python3.8/site-packages/django/contrib/gis/db/models/fields.py", line 188, in get_prep_value
    raise ValueError("Couldn't create spatial object from lookup value '%s'." % obj)
ValueError: Couldn't create spatial object from lookup value 'POINT(12.4604, 43.9420)'.

我不知道值POINT((12.4604,43.9420)在哪里。我从未输入过它。我想我需要添加一个默认值,我也尝试过通过修改point = models.PointField() :

point = models.PointField(default='POINT(0 0)

但错误仍然出现...

python mysql django geodjango
1个回答
0
投票

解决方案可能很简单,但是我必须阅读API中的代码本身才能获得此信息(找不到google链接)。

您必须设置默认值来保存PointField()。就我而言,由于我没有默认值可输入,因此我应该设置为:default = None

代码看起来像:

from django.contrib.gis.db import models

class Location(models.Model):
    gps = models.PointField(default=None)
© www.soinside.com 2019 - 2024. All rights reserved.