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)
Вернуться на верх