queryset Django?小问题

时间:2017-03-18 00:59:52

标签: django django-models django-forms django-templates django-queryset

我正在从我的数据库中搜索某些内容。 我不确定返回结果的方式。

它没有出现任何东西..

但是在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 个答案:

答案 0 :(得分:0)

您忘记将查询集的结果捕获到局部变量中,并在上下文中发送 而不是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})