Django: Как хранить определенные объекты модели в другой модели
В настоящее время я пытаюсь создать профиль пользователя, который будет содержать курсы, которые выбрал пользователь. В настоящее время модель профиля пользователя - UserProfile, а курсы - это объекты Course. Я пытался использовать поле ManyToMany, но это приводит к тому, что UserProfile хранит все курсы в Course.
Две модели хранятся в разных приложениях.
models.py
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default="default.jpg", upload_to="profile_pics")
courses = models.ManyToManyField("course.Course", blank=True, default=None, related_name = "courses")
def __str__(self):
return f"{self.user.username} Profile"
Любая помощь будет принята с благодарностью. Спасибо.
Вы можете создать новую таблицу-мост для соединения двух моделей, например:
class UserCourse(models.Model):
user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
course = models.ForeignKey(Course, on_delete=models.CASCADE)
...
Затем, если вы хотите запросить все курсы, которые выбрал пользователь:
user_courses = UserCourse.objects.filter(user=login_user)