我試圖在任何位置附近發送事件。 我從這個串行器獲取輸入。序列化地理查詢集
class LatLongCateSerializer(serializers.Serializer):
category_id = serializers.IntegerField()
latitude = serializers.DecimalField(max_digits=30,decimal_places=15)
longitude = serializers.DecimalField(max_digits=30,decimal_places=15)
distance = serializers.IntegerField()
然後我嘗試從這篇文章認爲從Django的REST框架的APIView繼承得到的事件,就像這樣:
class NearbyEvents(APIView):
serializer_class = LatLongCateSerializer
def get_serializer_class(self):
return self.serializer_class
def get_event_serializer(self):
return EventSerializer
def post(self, request, *args, **kwargs):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
point = Point(float(request.data['latitude']), float(request.data['longitude']))
events = Event.objects.filter(location_point__distance_lte=(point, D(km=int(request.data['distance']))))
if events.exists():
event_serializer = self.get_event_serializer()
ev = event_serializer(data=events)
if ev.is_valid():
return Response(ev.data, status=status.HTTP_200_OK)
else:
print ev.errors
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
我的事件串從GeoFeatureModelSerializer
繼承from rest_framework_gis.serializers import GeoFeatureModelSerializer
class EventSerializer(GeoFeatureModelSerializer):
class Meta:
model = Event
geo_field = 'location_point'
錯誤我獲得:
{u'non_field_errors': [u'Invalid data. Expected a dictionary, but got GeoQuerySet.']}
我的活動模型:
from location_field.models.spatial import LocationField
class BaseProduct(TimeStamp):
title = models.CharField(_('Title'), max_length=255)
desc = models.TextField(_('Description'), null=True, blank=True)
nearby_metro = models.CharField(_("Neraby Metro Station"), max_length=100, null=True, blank=True)
location_point = LocationField(based_fields=[address], zoom=7, default='Point(1.0 1.0)')
latitude = models.DecimalField(max_digits=30,decimal_places=15,null=True, blank=True)
longitude = models.DecimalField(max_digits=30,decimal_places=15,null=True, blank=True)
請指導我解決問題。
你可以發佈你的事件模型。 – levi
@levi請檢查模型。 –