Как создать query set с фильтром по дочерней таблице?
Всем привет, суть такова, на проекте пишу поиск, требуется переписать мой sql запрос под query set, есть 2 таблицы, одна описана в моделях(Profiles), вторая нет(profiles_groups), вторая по foreign key ссылается на первую, поля второй:
id, profile_id(foreign key к id первой), group_id. Требуется достать group_id, переписать sql запросы SELECT * FROM Profiles WHERE id = (SELECT profiles_id FROM profiles_groups WHERE group_id = 1) и SELECT group_id FROM profiles_groups WHERE profiles_id = '%s'" %request.user.id под query set, может кто помочь, или хотя б направить в правильном направлении? Спасибо
но, по-идее, БД не нужно менять, если таблица уже есть, то можно просто создать модель и использовать ее, при условии что нужная миграция уже присутствует (или если вы вообще не используете миграции)
Таблицу менять не нужно. Просто создаешь модель, делаешь makemigrations, migrate и все.
В модели описываешь таблицу:
class MyModel(models.Model):
id = models.IntegerField(primary_key=True)
name = models.TextField(db_column='name_in_your_db', blank=True)
info = models.TextField(db_column='info_in_your_db', blank=True)
...
class Meta:
managed = False
db_table = 'profiles_groups'
emeraldsinner: Создание неконтролируемой модели (managed=False) никак не повлияет на структуру базы данных, а только позволит использовать описанную таблицу в связке с другими моделями. Я когда-то через inspectdb настроил работу с базой от opencart (долго возился с составными ключами, но все-таки заработало). Таблицы никак не изменились, просто я смог читать из/писать в них.