Django 1.11-基于其他表的查询以排除

时间:2019-03-15 01:52:54

标签: django django-models

问题

我正在尝试构建一个邀请人们加入团队的系统,所以我有团队和邀请模型。我正在尝试查询没有团队且不在该团队的邀请表中的用户。到目前为止,我可以过滤没有团队的用户,但是我不知道如何从该团队中排除已有邀请的用户。

我到目前为止所拥有的

{"NFL": {},
"AFL": {
    "teams": [
        {
            "name": "New England Patriots",
            "area": "Foxborough",
            "position": [
                {
                    "name": "QB",
                    "player": [
                        {
                            "name": "Tom Brady",
                            "rings": "6"
                        }
                    ]
                },
                {
                    "name": "TE",
                    "player": [
                        {
                            "name": "Rob Gronkowski",
                            "rings": "3"
                        }
                    ]
                }
            ]
        }
    ]
}}

团队模型

from django.contrib.postgres.search import SearchVector

sv = SearchVector('first_name', 'last_name', 'email')
team = parsed_body['team_id']
query = parsed_body['query']
users = User.objects.annotate(search=sv).filter(search=query, profile__team=None)

邀请模型

from django.db import models

class Team(models.Model):
    name = models.CharField(max_length=32, blank=False, default=None)
    description = models.TextField(max_length=512, blank=False, default=None)
    created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)

2 个答案:

答案 0 :(得分:1)

User.objects.filter(profile__team=None).exclude(invitation_set__team=your_team_to_exclude)

答案 1 :(得分:1)

尝试一下

User.objects.exclude(invitation__team=1)

1 是您要指定的 PK/ID 实例的 Team < / p>