Python Django视图仅返回QuerySet一部分的数据
我正在尝试将以下内容发送到前端:Python Django视图仅返回QuerySet一部分的数据,python,django,Python,Django,我正在尝试将以下内容发送到前端: 用户在谷歌地图上的一组特定地理坐标范围内“喜欢”的对象(本例中为场地) 我的视图当前的设置方式似乎只是发回用户关注的人的id,而不是他们喜欢的任何咖啡馆(我正在一个肯定存在这种情况的空间中进行测试)。我不知道如何解决这个问题 Views.py def get_friends(request): template_name = 'testingland/electra.html' neLat = request.GET.get('neLat',
- 用户在谷歌地图上的一组特定地理坐标范围内“喜欢”的对象(本例中为场地)
def get_friends(request):
template_name = 'testingland/electra.html'
neLat = request.GET.get('neLat', None)
neLng = request.GET.get('neLng', None)
swLat = request.GET.get('swLat', None)
swLng = request.GET.get('swLng', None)
ne = (neLat, neLng)
sw = (swLat, swLng)
xmin = float(sw[1])
ymin = float(sw[0])
xmax = float(ne[1])
ymax = float(ne[0])
bbox = (xmin, ymin, xmax, ymax)
geom = Polygon.from_bbox(bbox)
friends = UserConnections.objects.filter(
follower=request.user
)
cafes = mapCafes.objects.filter(
geolocation__coveredby=geom,
uservenue__user_list__user__pk__in=friends
).distinct()
friend_list = [[friend.followed.username] for friend in friends]
friend_cafe_list = [[cafe.cafe_name, cafe.cafe_address, cafe.geolocation.y, cafe.geolocation.x] for cafe in cafes]
return JsonResponse([
{
'friends': friend_list,
'cafes': friend_cafe_list
}
], safe=False)
Models.py
class mapCafes(models.Model):
id = models.BigAutoField(primary_key=True)
cafe_name = models.CharField(max_length=200)
cafe_address = models.CharField(max_length=200)
cafe_long = models.FloatField()
cafe_lat = models.FloatField()
geolocation = models.PointField(geography=True, blank=True, null=True)
venue_type = models.CharField(max_length=200)
source = models.CharField(max_length=200)
description = models.CharField(max_length=1000)
image_embed = models.CharField(max_length=10000)
class Meta:
managed = False
db_table = 'a_cafes'
def __str__(self):
return self.cafe_name
[...]
class UserConnections(models.Model):
follower = models.ForeignKey(User, related_name="following", on_delete=models.CASCADE)
followed = models.ForeignKey(User, related_name="followers", on_delete=models.CASCADE)