免责声明:我没有创建此模型。我知道它不是一个好的,它应该被重构。但我无法改变它,我必须与之合作。另外,对不起,如果我犯了任何语法错误,英语不是我的第一语言。
我有这个(简化的)模型,其中一个事件有一个组,这个组有很多用户。
class Event():
clients_group = models.ForeignKey("ClientsGroup")
class ClientsGroup():
group_name = models.CharField()
clients = models.ManyToManyField("Client")
class Client():
user = models.OneToOneField(User)
当用户登录时,我需要获取该用户与之相关的事件列表。
我试过了:
list_of_events = Event.objects.filter(clients_group__clients__user__username=logged_in_user.username)
但我得到一个空列表。
答案 0 :(得分:2)
ClientsGroup模型中的客户端字段不正确。它应该是
clients = models.ManyToManyField("Client")
<强>不强>
clients = models.ManyToMany("Client")
当你解决这个问题时,我认为应该可行。仔细检查您的模型是否确实在其中包含对象并且它们相互链接。
如果在更改字段名称后仍然无效,请尝试将查询拆分为调试。例如,您可以查询两个单独的查询
target_client = Client.objects.get(user=logged_in_user)
list_of_events = Event.objects.filter(clients_group__clients=target_client)
从这里你可以找出哪些查询有效,哪些查询无效。