查询集 Django ?小问题
Posted
技术标签:
【中文标题】查询集 Django ?小问题【英文标题】:queryset Django ? small questions 【发布时间】:2017-08-09 16:55:31 【问题描述】:我正在做一个从我的数据库中搜索东西的功能。 我不确定返回结果的方式。
它什么都没有出来..
但是在 CMD 上,我可以看到因为
而搜索过 Mother_language 的用户的电子邮件print(MyUser.objects.filter(Mother_language__contains=Mother_language))
在视图中
这是我的模特
class MyUser(AbstractBaseUser):
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True,
)
username = models.CharField(max_length = 30, unique = True, null = False)
Nationality =models.CharField(max_length = 30,choices= Country_choice,null = False)
Mother_language = models.CharField(max_length = 30,choices= Language_list,null = False)
Wish_language =models.CharField(max_length = 30,choices= Language_list,null = False)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
picture = models.ImageField(upload_to='profile_images',blank=True)
objects = MyUserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username','Nationality','Mother_language','Wish_language','picture']
这是我的表格
class SearchForm(forms.ModelForm):
class Meta:
model = MyUser
fields = ('Mother_language','Nationality')
这是我的看法
def index(request):
print "entered"
form = SearchForm(request.POST or None)
if request.method == "POST" and form.is_valid():
Mother_language = form.cleaned_data['Mother_language']
Nationality = form.cleaned_data['Nationality']
MyUser.objects.filter(Mother_language__contains=Mother_language)
MyUser.objects.filter(Nationality__contains=Nationality)
print(MyUser.objects.filter(Mother_language__contains=Mother_language))
return render(request, "LanguageExchange/index.html", "MyUser": MyUser)
print(form.as_table())
return render(request, "LanguageExchange/index.html", "form": form,)
这是我的 index.html
<form id="form" method="get" action="% url 'index' %"enctype="multipart/form-data">
% csrf_token %
form.as_table
<input type="submit" value="submit" />
<br>
【问题讨论】:
【参考方案1】:您忘记将查询集的结果捕获到局部变量中并在上下文中发送 that 而不是 MyUser
- 类本身。
改变
MyUser.objects.filter(Mother_language__contains=Mother_language)
到
myuser_qs = MyUser.objects.filter(Mother_language__contains=Mother_language)
然后
return render(request, "LanguageExchange/index.html", "MyUser": MyUser)
到
return render(request, "LanguageExchange/index.html", "MyUser": myuser_qs)
【讨论】:
等等..你在哪里显示模板中查询集的内容? 我在我的 html 中错过了 MyUser以上是关于查询集 Django ?小问题的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 查询 - ORDER BY 杀死小结果集的查询性能
为啥在大型数据库上查找具有特定 ID 的对象的 Django 查询比在较小数据库上要慢?