Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django中子查询的查询_Django_Django Models_Django Views - Fatal编程技术网

Django中子查询的查询

Django中子查询的查询,django,django-models,django-views,Django,Django Models,Django Views,我试图从另一个查询中进行查询,但Django说:“呈现时捕获到DatabaseError:子查询返回的行数超过1行。”我使用的是PostGis 我的模型 class Place(models.Model): coordinate = models.PointField() class TranslatedPlace(models.Model): place = models.ForeignKey(Place) 我的看法 near_coordinates = Pla

我试图从另一个查询中进行查询,但Django说:“呈现时捕获到DatabaseError:子查询返回的行数超过1行。”我使用的是PostGis

我的模型

class Place(models.Model):    
    coordinate = models.PointField()

class TranslatedPlace(models.Model):
    place = models.ForeignKey(Place)
我的看法

  near_coordinates = Place.objects.filter(coordinate__distance_lte=(place_obj.coordinate, D(km=100)))
  near_places = TranslatedPlace.objects.filter(place=near_coordinates)

我相信您会希望使用来过滤第二个查询集

near_coordinates = Place.objects.filter(coordinate__distance_lte=(place_obj.coordinate, D(km=100)))
near_places = TranslatedPlace.objects.filter(place__in=near_coordinates)

如果假定
Place.objects.filter(坐标\uuuu距离\ulte=(Place\uobj.coordinate,D(km=100))
返回多个对象,则可以使用
near\uplaces=TranslatedPlace.objects.filter(坐标\uuuu in=near\u坐标)
注意Place字段中的\uu in。如果您只需要获取一个,并且只有一个,则可以执行
.get()
而不是
.filter()
。如果数据库中有多个,但您只想获取一个,则可以
.filter(…)[0]
获取第一个。此外,如果希望根据某种排序获得第一个排序,您可以
.filter(…).order\u by('sort\u field')[0]