django - 如何使用choicefield的实例在django中搜索对象?
问题描述
这是我的模型:
class Profile(models.Model):
date = models.DateTimeField(auto_now_add=True)
full_name = models.CharField(max_length=32,blank=True)
user_types = (
('Business User','Business User'),
('Professional','Professional'),
)
user_type = models.CharField(max_length=32,choices=user_types,default='Business User',blank=False)
user= models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
e_mail = models.EmailField(max_length=70,blank=True)
如您所见,我的Profile
模型中有两种类型的用户Business User
和Professional
. 所以我想在 django 中进行查询,它只会搜索Professional
用户。
我在我的观点中尝试过这个:
query = request.GET.get('q')
if query:
if Profile.objects.filter(user_type__icontains='Professional'):
result = Profile.objects.filter(Q(user__username__icontains=query) | Q(e_mail__icontains=query) | Q(full_name__icontains=query))
else:
result = Profile.objects.filter(user_type__icontains='Professional').order_by('id')
在我的模板中:
<form method='GET' class="form-horizontal" id="search-form" action="{% url 'userprofile:search' %}">
<div class="col-lg-8 col-md-8 col-sm-8 col-xs-6">
<input class="form-control" name="q" value="{{request.GET.q}}" placeholder="Search">
</div>
<div >
<span class="input-group-btn">
<button type="submit" class="btn btn-info pull-right">Go</button>
</span>
</div>
</form>
但是当我搜索Professional
用户时,它会给我与该名称关联的所有用户的列表。
谁能为此提供合适的解决方案。
谢谢
解决方案
解决了
在我看来完成了以下操作并且它有效:
user_profile = Profile.objects.filter(user_type__icontains='Professional')
query = request.GET.get('q')
if query:
result = user_profile.filter(Q(user__username__icontains=query) | Q(e_mail__icontains=query) | Q(full_name__icontains=query))
else:
result = Profile.objects.filter(user_type__icontains='Professional').order_by('id')
推荐阅读
- javascript - 如何优化对象写入性能?
- ruby-on-rails - Postgres fails to connect to a solr Docker container
- r - 如何在数据框中添加一个布尔列,指示每个假期日期是否属于日期列
- oracle - ORA-20000: Oracle Text error: DRG-10599: column is not indexed where index exists on select "for update"
- c++ - 为什么我不能比较我的自定义类类型的两个向量?
- css - Bulma 表格行不跨越全宽
- python-3.x - How to assign specific color to rectangular region depend on an integer output in python and show that rectangular region on desktop?
- c# - Getting exception when attempting to fill a DataSet object with OdbcDataAdapter results?
- r - plotting the data frame that returned from summarize function
- docker - 为什么 docker-compose 说网络未定义,但“docker network ls”显示它?