如何根据django中的models.charfield选项过滤用户

时间:2017-05-13 14:28:08

标签: python django

因此我目前将此作为每个用户的个人资料模型。

class Profile(models.Model):
user = models.OneToOneField(User)
location = models.CharField(max_length=120, choices=LOCATIONS,null=True, blank=True)
picture = models.ImageField(upload_to=upload_location, null=True, blank=True)

如何根据位置字段中给出的选项来提交用户?因此,例如,如果当前用户选择了伦敦,则在模板中他们只会看到具有相同位置的用户/个人资料的结果。

我是否必须在views.py中创建if语句或for循环?或者我使用q查找?如果有人能给我一些指示或指示我正确的方向,这将是惊人的!

提前感谢您提供任何帮助

1 个答案:

答案 0 :(得分:0)

建议在视图中过滤结果,并根据您的要求,您只需使用本机django查询集。您可以创建如下视图:

<强> views.py

library(stringr)
library(lubridate)
library(tidyverse)

a <- c("blablabla-19960101T000000Z-1.tsv", "blablabla-19960101T000000Z-2.tsv", "blablabla-19960101T000000Z-3.tsv")

a %>%
strsplit('-') %>%
transpose() %>%
map_dfc(~data_frame(.x)) %>%
unnest() %>%
set_names(c('Name','Date','no')) %>% 
mutate(Date = Date %>%
        str_extract('\\d+') %>% 
        ymd(),
        no = str_extract(no, '\\d+'))

例如,如果您有用于列出用户的网址from django.contrib.auth.models import User from django.shortcuts import render def users(request): location = request.GET.get('location', 'default_location') users = User.objects.filter(profile__location=location) return render(request, 'users.html', {'users': users}) ,则传递位置参数会过滤您的用户/users/