我无法从此示例模型创建数据库。
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)
但错误仍然出现...
解决方案可能很简单,但是我必须阅读API中的代码本身才能获得此信息(找不到google链接)。
您必须设置默认值来保存PointField()。就我而言,由于我没有默认值可输入,因此我应该设置为:default = None
代码看起来像:
from django.contrib.gis.db import models
class Location(models.Model):
gps = models.PointField(default=None)