由Django的related_name阻止的查询

时间:2012-08-06 10:39:10

标签: django django-queryset django-orm

这是一个多对多请求但我的'related_name'使查询错误..

型号:

class Course(models.Model):
    subscribed = models.ManyToManyField(User, related_name='course_list', blank=True, null=True, limit_choices_to={'userprofile__status': 'student'})

我想做什么:

for user in User.objects.filter(editedcourse__in=course_list):
    user.course_list.remove(editedcourse)

错误:

global name 'course_list' is not defined

其他尝试:

editedcourse.subscribed.clear()

related_name阻止访问subscribed字段.. acourse.subscribed已不再定义..

我想使用这两个方向,但我使用__set查询时遇到了问题。

如何实际执行我的请求,是否有可能一直与__set转换M2m关系?

1 个答案:

答案 0 :(得分:0)

第一个问题与相关名称无关。在尝试在查询中使用变量之前,您还没有定义变量course_list。它应该是您想要匹配的课程列表。

在第二次尝试中,您仍未解释“related_name阻止访问subscribed”的含义。什么是editedcourse?你从哪里得到它?

在评论后修改

  

我想搜索包含'editedcourse'

的course_list的用户

然后你完全以错误的方式做事。您的查询是“我想搜索名为”course_list“的列表中有editedcourse的用户。我猜您的意思是:

User.objects.filter(course_list=editedcourse)