我不能让一个简单的查询工作,尽管我遵循文档的https://docs.djangoproject.com/en/dev/topics/db/queries/#field-lookups。
models.py
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中获得了以下内容:
>>> User.objects.all()
[<User: a>]
>>> User.objects.filter(courses__name__contains='mathématique')
[]
>>> User.objects.filter(courses__name__in='mathématique')
[]它总是返回一个空列表,我不明白为什么。当我看到政府的时候,我可以看到一个User,他有一门“数学派”的课程。
编辑
forms.py
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“这个名称的混淆,这个名称用于类和字段
发布于 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')
请注意,我已将(课程)更改为(用户)
https://stackoverflow.com/questions/32169580
复制相似问题