Как получить доступ к таблице auth_user_group по ID
Как я могу напрямую указать столбец ID таблицы auth_user_group в запросах/DML?
Я имею в виду auth_user_group.id, не auth_group.id и не auth_user_group.group_id.
Например, я хочу напрямую выдать DML типа:
delete from auth_user_group where auth_user_group.id = 1
select id, user_id, group_id from auth_user_group where auth_user_group.id = 1;
Меня не интересует следующее обходное решение, которое позволяет избежать auth_user_group, требуя знания имени группы, вместо auth_user_group.id, и приводит к двум запросам вместо одного:
group = Groups.get(name='foo')
user.groups.remove(group)
Если вы хотите напрямую запросить таблицу junction/M:N в Django, обычно вы создаете "сквозную модель" и затем можете запросить ее напрямую. Однако в данном случае определение django.contrib.auth.models не использует сквозную модель. Я готов создать пользовательский AbstractUser, в котором группы будут определены как сквозная таблица, если это сработает. Но я не уверен, как указать сквозную таблицу, поскольку auth_user_group не имеет собственной модели в django.contrib.auth.models.
Поскольку нет явной сквозной модели, можно обратиться к неявной through модели
Group.user_set.through.objects.get(id=1)
или
User.groups.through.objects.get(id=1)
https://docs.djangoproject.com/en/4.0/ref/models/fields/#django.db.models.ManyToManyField.through