Django 1.5.4에 문제가 있습니다. StackOverflow에 https://gis.stackexchange.com/ 대신 질문을했습니다. 왜냐하면 저는 거의 100 % 확실하다고 GIS 관련 문제가 아니기 때문입니다. 당신이 볼 수 있듯이, 시리즈 모델은 ROI 모델GeoDjango 시리얼 라이저 및 ForeignKey 필드 오류
내 설정에 대한 참조를 포함
from django.contrib.auth.models import User
from django.contrib.gis.db import models as gismodels
# This models a region of interest, using a polygon
class ROI(gismodels.Model):
label = models.CharField(max_length=256, default='ROI')
area = models.FloatField(default=0.0)
geom = gismodels.PolygonField(srid=4326)
when = models.DateTimeField(default=datetime.now())
user = models.ForeignKey(User, null=True)
objects = gismodels.GeoManager()
def __unicode__(self):
return unicode(self.label)
class Meta:
ordering = ['when']
class Indicator(models.Model):
name = models.TextField()
color = models.TextField()
measurement_units = models.CharField(max_length=100)
algorithm = models.CharField(max_length=256)
data_origin = models.TextField()
class Series(models.Model):
roi = models.ForeignKey(ROI)
indicator = models.ForeignKey(Indicator)
내 models.py :
여기 내 세트 업입니다. py
SERIALIZATION_MODULES = {
'geojson': 'djgeojson.serializers'
}
django-geojson ~ 은 ROI 객체를 GeoJSON으로 직렬화합니다. 이 serializer를 사용하여 GeoJSON을 내 고객에게 보내고 싶습니다. 내가 직렬화 호출
AttributeError: 'ROI' object has no attribute 'roi'
관련에게이 오류 받고 있어요 : 그래서, 내 views.py는
@login_required
def get_rois(request):
rois_query = ROI.objects.filter(user=request.user)
polygons = json.loads(serializers.serialize('geojson', rois_query))
return HttpResponse(json.dumps(polygons), mimetype='application/json')
문제이
내 views.py처럼 보인다 오류 스택의 일부는 다음과 같습니다.
File "/home/vagrant/.virtualenvs/myapp/local/lib/python2.7/site-packages/django/core/serializers/__init__.py", line 122, in serialize
s.serialize(queryset, **options)
File "/home/vagrant/.virtualenvs/myapp/local/lib/python2.7/site-packages/djgeojson/serializers.py", line 349, in serialize
self.serialize_queryset(queryset)
File "/home/vagrant/.virtualenvs/myapp/local/lib/python2.7/site-packages/djgeojson/serializers.py", line 321, in serialize_queryset
self.handle_reverse_field(obj, field, field_name)
File "/home/vagrant/.virtualenvs/myapp/local/lib/python2.7/site-packages/djgeojson/serializers.py", line 243, in handle_reverse_field
values = [reverse_value(related) for related in getattr(obj, field_name).iterator()]
스택을 보면 역 참조이 ROI
에서 Series
으로 해결되는 문제가있는 것으로 보입니다. Series
은 ROI
을 가리키는 roi
필드를 가지고 있으며 serializer가 roi
필드가 Series
(올바른) 대신 ROI
클래스 (틀린)에 속한다고 생각합니다. 표현 무한 루프이 내 마음에 온다. 내가 Series
모델 클래스에서 roi
필드를 삭제하면
게다가, , 그것은
내가이 장고 - geojson 플러그인의 버그인지 또는 뭔가 잘못 (마지막 버전을 사용)에 대해 확실하지 않다 작동 내 코드 (대부분). 나는 기본 json serializer로 시도했지만 여전히 동일한 오류가 발생한다. 또한 모델 대신 gismodels에서 모든 모델 클래스를 상속하려고했습니다. 효과가 없습니다.
실마리가 있습니까?