我有一个模型类用户,其中包含我公司的用户
class User(models.Model):
...
name = CharField(max_length=100)
email = CharField(max_length=100)
...
)
然后,我的公司合作为另一家公司提供服务,因此我们决定将两个用户都保留在同一用户表中。因此,我们在模型中添加了一个source_id字段,所以现在看起来像..我们保留默认值1表示用户属于我们公司,对于其他用户,我们将source_id设置为2。
class User(models.Model):
...
soiurce_id=IntegerField(default=1)
name = CharField(max_length=100)
email = CharField(max_length=100)
...
)
但是完整的代码仅适用于单个源。甚至同一个用户也可以来自两个拥有相同电子邮件地址的不同公司。.所以我将(source_id,email)设置为唯一约束。虽然我在请求流中获取源。因此,我尝试通过在用户管理器的查询集中附加source_id来覆盖get和filter,但是如果我们将用户与其他表联接,那将失败
例如: Houses.objects.filter(user__email =“ abc@xyz.com”)
在这种情况下,它将调用房屋模型管理器,并且查询不会被过滤器覆盖,而我将同时获得两个用户。
如果在该用户表中不存在与该用户表相关的每个查询,是否可以强制注入source_id?在一个集中的地方,以避免太多的代码更改。
我在所有查询都位于一个中心位置,因此,如果可以以某种方式查看该查询集中涉及的所有模型,可以查看用户是否参与其中,并将附加source_id过滤器
在此先感谢您的帮助或思考。