gpt4 book ai didi

python - 使用 _set.all() 中的集合并使用 __in 对该集合进行过滤

转载 作者:行者123 更新时间:2023-11-30 23:32:20 24 4
gpt4 key购买 nike

假设我是部落酋长,俯瞰部落事件。我有 3 个型号:

class Hunter:
tribes = models.ManyToManyField(Tribe)
info

class Missions:
user = models.ForeignKey(User)
info

class Tribe:
tribe_chief = models.ForeignKey(User) #directed towards Chief
info

作为酋长,我有views.py(tribek 通过 URL 传递)

user = request.user
tribe_instance = Tribe.objects.get(pk=tribepk)
myhunters = tribe_instance.hunter_set.all()
allmissions = Mission.objects.filter(user__in=myhunters)

因此,除了所有任务之外,所有内容都会填充。是否可以使用 _set.all() 结果作为过滤条件?谢谢

如果有帮助,这就是 myhunters 中返回的内容 ->

'myhunters': [<Hunter: test>, <Hunter: asdf>, <Hunter: more>]

最佳答案

所以 Mission 有一个 ForiegnKeyUser 而不是 Hunter。因此,当 Hunter 需要用户列表时,您将传入它。

您可以更改模型,以便在 Hunter 模型中将 ForiegnKey 更改为 User

class Hunter:
tribes = models.ManyToManyField(Tribe)
user = models.ForiegnKey(User)

allmissions = Mission.objects.filter(user__id__in=[myhunter.user.id for myhunter in myhunters])

或者你可以让Mission有一个ForiegnKeyHunter

class Missions:
user = models.ForeignKey(Hunter)
info

allmissions = Mission.objects.filter(user__in=myhunters)

编辑:正如阿米尔·阿德南 (Aamir Adnan) 在评论中指出的那样,更新第一个选项的查找,使其成本更低。

关于python - 使用 _set.all() 中的集合并使用 __in 对该集合进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19443583/

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