При определении пользовательского пользователя Django в сочетании с django-taggit я столкнулся с проблемой ORM, у меня также есть эта проблема в фильтрах администратора django.
ПРИМЕЧАНИЕ. Я использую этот фрагмент кода: https://djangosnippets.org/snippets/1034/
# User
id | first_name
---------------------------------
1 | John
2 | Jane
# MyUser
usr_ptr_id | subscription
---------------------------------
1 | 'A'
2 | 'B'
Теперь, когда я использую ORM django для фильтрации определенных тегов для MyUser, например.
MyUser.objects.filter(tags__in=tags)
Я получаю следующую ошибку:
(1054, "Unknown column 'myapp_user.id' in 'on clause'")
Напечатанный необработанный запрос:
SELECT `myproject_user`.`id`, `myproject_user`.`first_name`, `myapp_user`.`user_ptr_id`, `myapp_user`.`subscription`
FROM `myapp_user` INNER JOIN `myproject_user`
ON ( `myapp_user`.`user_ptr_id` = `myproject_user`.`id` )
INNER JOIN `taggit_taggedtag`
ON ( `myapp_user`.`id` = `taggit_taggedtag`.`object_id`
AND (`taggit_taggedtag`.`content_type_id` = 31))
WHERE (`taggit_taggedtag`.`tag_id`)
IN (SELECT `taggit_tag`.`id` FROM `taggit_tag` WHERE `taggit_tag`.`id` IN (1, 3)))
Изменение «id» на «user_ptr_id» во второй части ON заставляет запрос работать. Есть ли способ заставить это с помощью Django ORM?