У меня есть пользователи модельного класса, в которых есть пользователи моей компании
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) как уникальное ограничение. Хотя я получаю источник в потоке запросов. Поэтому я попытался переопределить get и filter, добавив source_id в набор запросов менеджера пользователей, но это не получится, если мы, пользователь, будем объединены с другими таблицами
Например:
Houses.objects.filter (user__email = "abc@xyz.com")
при этом он вызовет диспетчер моделей дома, и запросы не будут переопределены фильтром, и я получу обоих пользователей.
Есть ли способ, которым я принудительно вставляю source_id в каждый запрос, связанный с этой пользовательской таблицей, если его нет в запросе? в централизованном месте, чтобы избежать большого изменения кода.
У меня есть центральное место, куда приходят все запросы, поэтому, если есть какой-либо способ, я могу видеть все модели, вовлеченные в этот набор запросов, я могу видеть, участвует ли пользователь в нем и добавит ли фильтр source_id
Заранее спасибо за любую помощь или продумал.