在Django中的视图中,ManyTomay字段无或可以呼叫字段

发布于 2025-02-05 02:55:10 字数 1628 浏览 2 评论 0原文

我的代码有问题,我正在尝试查询我的课程模型,我可能会在用户模型中进行很多可能的领域,现在我需要查询课程模型,该课程标题或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或标题相同的课程

I have a problem in my code,I'm Trying to querying to my course model, I have a many to may field of course in user model,now I need to query to course model that course title or id is equal to user's courses

My course model is:


    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)

My user model in another app is:


    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'))

I have to say my user model and course model are in different app

This is my view:


    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)

I tried so many code but none of them worked,please any one can help me how can I write this view?

as I said I want to call courses that have same id or title with user courses

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你在看孤独的风景 2025-02-12 02:55:11

如果要显示此用户的所有课程,请更改您的代码:

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

另外,请确保正确添加许多对象:

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

可以查看 this 文件:

If you want to show all Courses of this user, change your code:

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

Also, be sure to add Many to many object properly:

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

Can take a look at this file:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文