У меня есть следующие модели:
class Place(models.Model):
name = models.CharField(max_length=300)
class Person(models.Model):
name = models.CharField(max_length=300)
class Manor(models.Model):
place = models.ManyToManyField(Place, related_name="place"))
lord = models.ManyToManyField(Person, related_name="lord")
overlord = models.ManyToManyField(Person, related_name="overlord")
Я хочу привязать все места, связанные с отношением «лорд» к конкретному человеку, а затем получить центр, используя метод GeoDjango.Это насколько я знаю:
person = get_object_or_404(Person, namesidx=namesidx)
manors = Manor.objects.filter(lord=person)
places = []
for manor in manors:
place_queryset = manor.place.all()
for place in place_queryset:
places.append(place)
if places.collect():
centre = places.collect().centroid
Однако, это дает мне:
AttributeError at /name/208460/gamal-of-shottle/
'list' object has no attribute 'collect'
Могу ли я (а) сделать это более элегантным способом, чтобы получитьQuerySet мест назад, или (б) создать QuerySet, а не список на мой взгляд?
Спасибо за вашу помощь!