【发布时间】:2018-12-16 02:03:01
【问题描述】:
我有一个 Django Web 应用程序,我想对其进行一些基本过滤。基本上,我有一个类似网站的社交媒体,用户可以在其中注册他们的爱好。我想要做的是有一个过滤器,用户现在可以选择只查看男性或女性用户。虽然我可以使用以下代码在 Python Shell 中执行此操作:
from mainapp.models import Profile
Users = Profile.objects.all().filter(gender = "Male")
我在 Django 中实现它时遇到了麻烦。这是我的 models.py 文件:
class Hobby(models.Model):
name = models.CharField(max_length=50, default='')
def __str__(self):
return self.name
class Profile(models.Model):
user = models.OneToOneField(
to=User,
blank=True,
null=True,
on_delete=models.CASCADE
)
gender = models.CharField(max_length=6, default='')
age = models.CharField(max_length=3, default='')
dob = models.CharField(max_length=10, default='')
image = models.ImageField(upload_to='profile_images')
hobbies = models.ManyToManyField(Hobby)
Views.py 文件中的过滤函数:
def filter(user):
other_users = Profile.objects.all()
filter_results = other_users.filter(gender = "Male")
context = {
'appname': appname,
'usersresults': filter_results
}
return render(request, 'mainapp/members.html', context)
网址部分:
path('filter/', views.filter, name='filter'),
还有 HTML 代码:
<ul>
{% for user in usersresults %}
<li>
<a> {{user}}</a>
</li>
{% endfor %}
</ul>
但是,这并没有按预期工作,并且不会向显示器返回任何内容。我不确定为什么会出错 - 任何帮助/建议将不胜感激。
【问题讨论】:
标签: python html django database orm