首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤ManyToManyField

过滤ManyToManyField
EN

Stack Overflow用户
提问于 2015-08-24 01:43:50
回答 1查看 117关注 0票数 0

我不能让一个简单的查询工作,尽管我遵循文档的https://docs.djangoproject.com/en/dev/topics/db/queries/#field-lookups

models.py

代码语言:javascript
复制
class Course(models.Model):
    name = models.CharField(max_length=30, unique=True, blank=False)    
    code = models.CharField(max_length=10, unique=True, blank=False)

    def __str__(self):
        return self.name

class User(models.Model):
    ...
    courses = models.ManyToManyField(Course)

我注册了一个名为"a“的用户和一个名为”mathématque“的课程,但我在shell中获得了以下内容:

代码语言:javascript
复制
>>> User.objects.all()
[<User: a>]

>>> User.objects.filter(courses__name__contains='mathématique')
[]

>>> User.objects.filter(courses__name__in='mathématique')
[]

它总是返回一个空列表,我不明白为什么。当我看到政府的时候,我可以看到一个User,他有一门“数学派”的课程。

编辑

forms.py

代码语言:javascript
复制
from user.models import User, Course

class UserForm(forms.ModelForm):
    cours_choices = forms.ModelChoiceField(queryset=Course.objects.all())
    class Meta:
        model = Offer
        fields = ('cours_choices', 'faculty', 'description')

EDIT2

好了,问题解决了。上面的查询运行良好。我不知道为什么它现在可以工作,但我怀疑罪魁祸首可能是对"cours“这个名称的混淆,这个名称用于类和字段

EN

回答 1

Stack Overflow用户

发布于 2015-08-24 02:38:20

如果您将"course = models.ManyToManyField( User )“从class User中删除,并将其移到class Course中,如下所示:"course =models.ManyToManyField(User)”,并执行以下查询:

User.objects.filter(course__name__contains='mathématique')

请注意,我已将(课程)更改为(用户)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32169580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档