Я хочу найти Records
с определенным tag
в радиусе 100 миль.У меня есть два запроса, которые работают независимо (см. Ниже), но я не знаю, как их соединить.
Также модель Records
имеет внешний ключ, указывающий на модель GeoLocation
, которая называется geo_location
.Я хочу иметь возможность показывать поля из обеих моделей (Records
и GeoLocation
) в одном кадре.Я попытался использовать .select_related()
в запросе GeoLocation
, указанном ниже, но по какой-то причине мне удалось показать только поля модели GeoLocation
, а не дополнительные поля модели Records
, как я ожидал.
tag_search = Records.objects.filter(tags__slug__in=[tag])
geo_search = GeoLocation.objects.select_related().filter(srid2163__distance_lte=(pnt, D(mi=100))).distance(pnt)
Есть идеи?
Это мои модели:
from taggit.managers import TaggableManager
from django.contrib.gis.db import models
class GeoLocation (models.Model):
lat = models.FloatField(blank=True)
long = models.FloatField(blank=True)
srid2163 = models.PointField(blank=True,srid=2163)
server_time = models.DateTimeField(auto_now_add=True)
objects = models.GeoManager()
def __unicode__(self):
return u'%s %s %s' % (self.lat, self.long, self.server_time)
class Records(models.Model):
title = models.CharField(blank=True, max_length=50)
message_body = models.TextField()
server_time = models.DateTimeField(auto_now_add=True)
geo_location = models.ForeignKey(GeoLocation, related_name='geoloc')
tags = TaggableManager()
def __unicode__(self):
return u'%s %s %s' % (self.title, self.message_body, self.server_time)
Для поля tags
в модели Records
, которую я использую django-taggit .