gpt4 book ai didi

python - Django 获取相关模型的所有记录

转载 作者:太空狗 更新时间:2023-10-29 20:51:58 27 4
gpt4 key购买 nike

我有 3 个待办事项列表应用模型:

class Topic(models.model)
user = models.ForeignKey(UserProfile)
lists = models.ManyToManyField(List)

class List(models.model)
activities = models.ManyToManyField(Activity)

class Activity(models.model)
activity = models.CharField(max_length=250)

当用户选择一个主题,然后选择一个列表(子类别)时,这是有意义的,它显示了该列表中的所有事件。

但是我如何有效地查询类似的东西

  • 用户 X 的所有事件(无论主题或列表如何)
  • 用户 X 的主题 X 的所有事件(不考虑列表)

我是否需要在查询中使用 select_related() 而不是循环遍历相关对象,或者是否有更有效的方法而不循环? (或者我应该改变我的模型吗?)

最佳答案

使用双下划线语法跨关系查询。

用户的所有事件:

Activity.objects.filter(list__topic__user=my_user)

用户针对某个主题的所有事件:

Activity.objects.filter(list__topic=my_topic)

(请注意,目前主题仅适用于单个用户。不确定这是否是您的意思:您描述的是用户选择一个主题,这在此处不会发生。可能来自的链接UserProfile 的主题应该反过来,或者是 ManyToMany。)

关于python - Django 获取相关模型的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20395691/

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