gpt4 book ai didi

Django 模型方法与自定义管理器

转载 作者:行者123 更新时间:2023-12-05 01:41:29 24 4
gpt4 key购买 nike

<分区>

我无法决定是使用自定义管理器还是模型方法。我有一个模型 User 并且有一个查询来查找特定用户半径内的其他用户。

所以我的两个选择是:

class UserManager(models.Manager):
def find_users_in_radius(self, user):
return super().get_queryset().filter(
location__distance_lt=(
user.location, Distance(mi=user.search_radius))).exclude(
pk=user.pk)

class User(AbstractUser):
.....
users_in_radius = UserManager()

User 模型上的方法:

class User(AbstractUser):
.....
def users_in_search_radius(self):
return User.objects.filter(
location__distance_lt=(
self.location, Distance(mi=self.search_radius))).exclude(
pk=self.pk)

在我看来,我会使用第一种方法获得查询结果:User.users_in_radius.find_users_in_radius(request.user)

或者第二种方法:request.user.users_in_search_radius()

我更喜欢第二种选择,但我想知道这是否是一种不好的做法。我还没有看到任何人在模型方法中调用 User.objects 的例子。有没有其他方法可以做到这一点,或者自定义管理器是更好的方法?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com