не может создать PointField () в GeoDjango - PullRequest
0 голосов
/ 16 июня 2020

Я не могу создать свою базу данных из этого образца models.py.

    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)

, но ошибки все равно возникают ...

1 Ответ

0 голосов
/ 16 июня 2020

Решение может быть простым, но мне нужно прочитать сам код в API, чтобы получить эту информацию (не могу найти ссылку google).

Вы должны установить значение по умолчанию для сохранения PointField (). В моем случае, поскольку у меня нет значения по умолчанию для ввода, я должен был установить это: default = None

Код будет выглядеть так:

from django.contrib.gis.db import models

class Location(models.Model):
    gps = models.PointField(default=None)
...