查询集 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 ?小问题的主要内容,如果未能解决你的问题,请参考以下文章

Django:如何更改内联表单集中的字段小部件

SQL Server 查询 - ORDER BY 杀死小结果集的查询性能

为啥在大型数据库上查找具有特定 ID 的对象的 Django 查询比在较小数据库上要慢?

Django 查询超过 5 小时的对象的日期时间

django admin TabularInline raw_id_fields 添加查询 搜索小图标显示

django的小操作,查询