2014-04-06 3 views
0

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으로 해결되는 문제가있는 것으로 보입니다. SeriesROI을 가리키는 roi 필드를 가지고 있으며 serializer가 roi 필드가 Series (올바른) 대신 ROI 클래스 (틀린)에 속한다고 생각합니다. 표현 무한 루프이 내 마음에 온다. 내가 Series 모델 클래스에서 roi 필드를 삭제하면

게다가, , 그것은

내가이 장고 - geojson 플러그인의 버그인지 또는 뭔가 잘못 (마지막 버전을 사용)에 대해 확실하지 않다 작동 내 코드 (대부분). 나는 기본 json serializer로 시도했지만 여전히 동일한 오류가 발생한다. 또한 모델 대신 gismodels에서 모든 모델 클래스를 상속하려고했습니다. 효과가 없습니다.

실마리가 있습니까?

답변

관련 문제