django - 尽管使用了 get、filter 和 all,Django 没有返回查询集
问题描述
请我是初学者,我正在尝试制作一个医院管理系统。我想显示患者资料,但它只返回我的查询集中的名字。我需要显示保存到我的数据库中的所有数据。我已经尝试过 filter、get 和 all。它们只返回我的str方法中定义的名字。
意见
def ProfileView(request):
profile = Patient.objects.filter(email=request.user.email)
return render(request,'profile.html',{'profile':profile})
楷模
类病人(模型。模型):
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=20)
email= models.EmailField(unique=True)
phone_number = models.CharField(max_length=11)
address = models.CharField(max_length=255)
def __str__(self):
return self.first_name
配置文件.html
{%extends 'base.html'%}
{%load static%}
{%block content%}
<div class="container">
{{profile}}
</div>
{%endblock content%}
以 html 显示的结果
<QuerySet [<Patient: Kehinde>]>
解决方案
您可能想要 Profile 和 User 之间的一对一关系,而不是通过电子邮件进行查找
除了.filter()
返回QuerySet
while.get()
返回实例之外,您应该使用.filter()
def ProfileView(request):
profiles = Patient.objects.filter(email=request.user.email)
return render(request, 'profile.html', {'profiles':profiles})
{%extends 'base.html'%}
{%load static%}
{%block content%}
<div class="container">
{% for profile in profiles %}
{{profile.first_name}}
{{profile.last_name}}
{% endfor %}
</div>
{%endblock content%}
.get()
如果您只期望单个对象作为结果,则可以使用
def ProfileView(request):
profile = Patient.objects.get(email=request.user.email)
return render(request, 'profile.html', {'profile':profile})
推荐阅读
- html - 为什么我不能将这些 Bootstrap 4 导航丸中的文本变为黑色?
- javascript - 如果超过最大容量,如何在 DynamoDB 表中插入多个项目并等待?
- php - HTML中的对齐
- arrays - Foreach-object 返回“无法索引到空数组”,但是当我复制循环的每一行时工作正常
- flutter - 无法通过 Navigator.push() 方法将数据从主页传递到 results_page
- wordpress - 请求多个网站图标而不是一个并且加载缓慢
- python - 如何保存具有元组键的字典
- embedded-jetty - Jetty 在运行集成测试时在几个请求后使会话无效
- mysql - 如何将多行与来自mysql中多个表的多个连接组合起来
- qt - 制作可以用鼠标操作的动画