2017-09-13 12 views
1

ich eine Tabelle von Punkten mit Standortdaten, wie in den folgenden Spalten gespeichert:django Verwendung Spaltenwert für die Filterung

coordinates: the geolocation data in longitude and latitude 
radius:  the distance from coordinate that it is visible 

Jetzt nehme ich einen beliebigen Punkt und will die Punkte finden, die den Zufall sichtbar sind Punkt django Geolocation mit wie:

LocationInfo.objects.filter(coordinates__distance_lt=(random_point, D(km=1)) 

Derzeit bin Abrufen ich die Punkte innerhalb von 1 km Radius, aber ich möchte den Radius aus der Tabelle verwenden. Wie kann ich den Radius vom Tisch aus verwenden?

+0

ersetzen 'km = 1 'mit' km = theVariableYouWant' –

+0

Ich möchte den Wert in der Radius-Spalte der Datenbank – sam23

+0

gut mich für sie mit dem Modellcode liefern gespeichert verwenden, so Ich kann dir den Code zeigen. Sie müssen es einfach 'modelName.objects.get (id = yourDesiredId)' oder anstelle von ID holen, was auch immer Sie brauchen, um es zu holen. Hoffe das hilft! –

Antwort

2

filters-can-reference-fields-on-the-model

from django.db.models import F 
LocationInfo.objects.filter(coordinates__distance_lt=(random_point, D(km=F('FIELD_NAME'))) 
#                   ^^^^^^^ 
+0

Ich bekomme den Fehler TypeError: float() Argument muss eine Zeichenfolge oder eine Zahl sein, wenn ich D (km = F ('Radius')) versuchen, während Radius ein floatfield ist – sam23

+0

D wird von django.contrib.gis.measure Import importiert D – sam23