Manytomay field is None или невозможно вызвать поле в представлении в django

У меня проблема в моем коде, я пытаюсь сделать запрос к моей модели курса, у меня есть поле many to may курса в модели пользователя, теперь мне нужно сделать запрос к модели курса, что название курса или id равно курсам пользователя

Моя модель курса такова:


    class Courses(models.Model):
    title = models.CharField(max_length=100, null=False, blank=False)
    description = models.TextField(null=False, blank=False)
    active = models.BooleanField(default=False)
    default_course = models.BooleanField(default=False)

Моя модель пользователя в другом приложении такова:


    class User(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(max_length=255, unique=True, db_index=True)
    courses = models.ManyToManyField('academy.Courses', related_name='user_courses', 
     blank=True)
    is_verified = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)
    is_author = models.BooleanField(default=False)
    is_admin = models.BooleanField(default=False)
    is_adviser = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    auth_provider = models.CharField(
        max_length=255, blank=False,
        null=False, default=AUTH_PROVIDERS.get('email'))

Я должен сказать, что моя модель пользователя и модель курса находятся в разных приложениях

Вот мое мнение:


    class CoursesListView(mixins.ListModelMixin, viewsets.GenericViewSet):
    serializer_class = UserSerializer

    def get_queryset(self, **kwargs):
        user = self.request.user
        course = Courses.objects.filter(title__in=user.courses.title)

Я пробовал так много кода, но ни один из них не сработал, пожалуйста, кто-нибудь может помочь мне, как я могу написать этот вид?

Как я уже сказал, я хочу вызывать курсы, которые имеют одинаковый id или название с пользовательскими курсами

Добрый день!

Если вы хотите показать всех Courses этого пользователя, измените код:

    def get_queryset(self, **kwargs):
        user = self.request.user
        course = Courses.objects.filter(user_courses=user) # <- this
        # or
        course = user.courses.all() # <- this

Также не забудьте правильно добавить Many ко многим объектам:

course_data = {'title': 'Django', 'description': 'Django course', 'active': True, 'default_course': True}
course = Courses.objects.create(**course_data)
user = MyUser.objects.create_user(username='test', password='test')
user.courses.add(course) # <- this

Можно взглянуть на этот файл: https://github.com/almazkun/django_to_many/blob/main/many/tests.py

Вернуться на верх