Объяснение на основе учебника django для создания библиотеки:
Допустим, вы разрешаете пользователю добавлять модель Book
в базу данных вашей библиотеки. Однако вы не хотите, чтобы они добавили модель Genre
к Book
. Вместо этого в вашей базе данных уже есть модель Genre
со всеми перечисленными Genre
в мире. Когда пользователь добавляет Book
в вашу базу данных, вы хотите, чтобы ваша база данных добавила правильные Genre
в Book
на основе текста в сводке Book
. Скажем, у Book
есть резюме с именем TextField
и слова science
и fiction
при создании книги. Затем база данных добавит Genre
из science fiction
к вашей книге на основе слов, найденных в сводке книги TextField
. Для меня это не имеет значения, происходит ли это в момент создания книги или сразу после нее.
Я пытаюсь сделать то же самое с веб-сайтом, который занимался бы регистрацией / созданием тренировок. Когда пользователь добавляет workout
(то есть книгу в библиотеку) в базу данных, я бы хотел, чтобы база данных добавила movement
(то есть жанр для книг) к тренировке в зависимости от того, какой текст находится в тренировке TextField
, Пример ниже:
Я добавляю тренировку на веб-сайт со следующей информацией как TextField
:
5 раундов:
- 15 Pull Ups
- 30 приседаний
- 200 м. Бег
Затем я хочу, чтобы база данных создала правильную связь между экземпляром тренировки и моделями движения, которые используются в TextField экземпляра тренировки: подтягивание, приседание и бег.
Таким образом, я могу искать в базе данных по тренировкам, которые содержат подтягивания, приседания или бега, и эта тренировка появится. Каждая модель движения также содержит «Классификацию» ForeignKey
верхней части тела, нижней части тела и т. Д. Таким образом, поиск также может быть выполнен для тренировок, которые предназначены только для верхней части тела и т. Д.
У меня вопрос, как бы я реализовал модельные отношения между Тренировкой, Движением и Классификацией? Я не думаю, что могу использовать отношения ForeignKey или ManytoMany между workout
и movement
, потому что они оба должны быть добавлены одновременно. Другими словами, пользователь должен будет ввести тренировку в TextField, а затем добавить, какие движения в тренировке. Я хочу, чтобы это был один шаг для пользователя. Они вводят в тренировку, база данных добавляет отношение к движениям в тренировке на основе того, что пользователь ввел в TextField. Я предполагаю, что для того, чтобы эта функциональность работала, должны быть созданы отношения между тренировкой и моделью движения после создания модели тренировки, а не во время. Однако я не уверен, как создать эту функцию на уровне базы данных.
В настоящее время я использую SQLite в качестве базы данных, так как он используется по умолчанию в Django.
Есть предложения?