Django order_by 相关模型的方法

发布于 2024-11-08 07:50:50 字数 694 浏览 0 评论 0原文

我想为每个单独的查询按“距离”订购“事件”查询集

鉴于以下情况,我该如何实现?

class Venue(models.Model):
    latitude = models.FloatField(max_length=10)
    longitude = models.FloatField(max_length=10)

    def distance(self, query_coordinates):
        "Calculates distance on a query by query basis"
        venue_coords = self.latitude, self.longitude
        distance_to_venue = distance.distance(query_coordinates, house_coords) # a function which outputs distance in miles
        return distance_to_venue

class Event(models.Model):
    venue = models.ForeignKey(Venue, related_name='shows')

在阅读了一些相关的 stackoverflow 问题后,我一直在仔细阅读注释文档,但不知道如何让它适合我的情况。我怎样才能有效地做到这一点?

提前致谢。

I'd like to order an "Event" queryset by "distance" for each individual query

Given the following, how can I pull it off?

class Venue(models.Model):
    latitude = models.FloatField(max_length=10)
    longitude = models.FloatField(max_length=10)

    def distance(self, query_coordinates):
        "Calculates distance on a query by query basis"
        venue_coords = self.latitude, self.longitude
        distance_to_venue = distance.distance(query_coordinates, house_coords) # a function which outputs distance in miles
        return distance_to_venue

class Event(models.Model):
    venue = models.ForeignKey(Venue, related_name='shows')

I've been pouring over the annotate docs after reading some related stackoverflow questions, but can't figure out how to get it to work for my situation. How can I do this efficiently??

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月亮是我掰弯的 2024-11-15 07:51:07

你无法做到这一点,django 不支持按模型方法排序。

要处理地理空间数据,请尝试 GeoDjango (http://docs.djangoproject.com/en/dev/ref/contrib/gis/)。

You can't pull it off, django doesn't support ordering by model methods.

For working with geo-spatial data try GeoDjango (http://docs.djangoproject.com/en/dev/ref/contrib/gis/).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文